Aşağıdaki kod derler ve "doğru olanı" yapar:Boost :: variant mağaza referansları nasıldır?
#include <boost/variant.hpp>
#include <iostream>
int main()
{
int a = 10;
boost::variant<int&, float&> x = a;
a = 20;
std::cout << boost::get<int&>(x) << "\n";
return 0;
}
Nasıl arttırmakla kalmaz :: varyant mağaza referans? C++ standardına göre, referansların nasıl depolandığı tamamen derleyiciye aittir. Aslında, boost::variant
, bir referans ile kaç bayta kaç tane olduğunu bilebilir? sizeof(T&) == sizeof(T)
, dolayısıyla sizeof()
işlecini kullanamaz. Şimdi, referansların büyük olasılıkla işaretçiler olarak kullanıldığını biliyorum, ancak dilde garanti yoktur. get<>
ve ziyaretçinin referansları saklarken nasıl çalıştığını iyi bir şekilde açıklayın.
Bir nesneyi sarmalayarak. '<< sizeof (std :: vektör &), sizeof (std :: vektör ), sizeof (T); struct T {std :: vektör & r;}; '56, 56, 8 –