Nasıl boost::varyant ve boost::herhangi bir iş mi?
Ne kadar değişken ve herhangi bir kütüphane dahili artırmak mı? Üzerinde çalıştığım bir projede, şu anda etiketli Birliği kullanın. C sendikalar mı yapıcılar, yıkıcılar ya da aşırı yüklenmiş atama operatörleri ile nesneleri kullanmasına izin vermeyin, çünkü başka bir şey kullanmak istiyorum.
Herhangi bir varyantı ve boyutunu sordum, ve onlarla deneyler yaptı. Olası en uzun türü plus 8 bayt boyutunu alır varyantını platform: benim sadece 8 bayt tür bilgileri o ve diğerleri saklı değer. bence Diğer taraftan, herhangi bir 8 bayt alır. 64-bit platform üzerinde olduğum için, herhangi bir gösterici tutar sanırım.
Nasıl tutar biliyor mu? Nasıl Değişken şablonları ile ne yapılabilir? Onları kullanmadan önce bu sınıflar hakkında daha fazla bilmek istiyorum.
CEVAP
Eğer destek okursanız::fikir için kaynak sağlamak herhangi bir belge: http://www.two-sdg.demon.co.uk/curbralan/papers/ValuedConversions.pdf
Temel bilgi gizleme için gerekli C bir yetenektir. Bunu Öğren!
Bu yana en yüksek oy cevap burada tamamen yanlış, ve ben benim şüphelerim bu insanlar aslında git bak kaynağını doğrulamak için aslında, burada temel bir uygulama gibi herhangi bir arayüz olacak wrap herhangi bir türü ile bir f() fonksiyonu ve izin için:
struct f_any
{
f_any() : ptr() {}
~f_any() { delete ptr; }
bool valid() const { return ptr != 0; }
void f() { assert(ptr); ptr->f(); }
struct placeholder
{
virtual ~placeholder() {}
virtual void f() const = 0;
};
template < typename T >
struct impl : placeholder
{
impl(T const& t) : val(t) {}
void f() const { val.f(); }
T val;
};
// ptr can now point to the entire family of
// struct types generated from impl<T>
placeholder * ptr;
template < typename T >
f_any(T const& t) : ptr(new impl(t)) {}
// assignment, etc...
};
::destek herhangi bir f dışında aynı temel şeyi yapar() aslında 2 verir ** ve işe any_cast işlevi için diğer bilgi erişim sağlar.

Boost.Vs herhangi bir Destek.Varyant...
Nasıl libuv/ * Boost farkı nedir?...
nasıl boost::fonksiyon ve boost::bind ...
Nasıl Boost ulaşmak için kullanılan C ...
Nasıl Android Mall of Sofia ile boost ...