12
下面的代码编译并做“正确的事”:boost :: variant存储引用如何?
#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;
}
如何提高::变种店的参考?根据C++标准,如何存储引用完全取决于编译器。其实,boost::variant
怎么知道引用占用了多少字节呢? sizeof(T&) == sizeof(T)
,所以不能使用sizeof()
运算符。现在,我知道引用很可能是作为指针来实现的,但是在语言中没有保证。 get<>
和访问如何在变体存储引用时工作的一个很好的解释获得额外的点:)
通过将它们包装在一个对象中。 sizeof(std :: vector&),sizeof(std :: vector ),sizeof(T); struct T {std :: vector & r;};'56,56,8 –
2012-02-16 01:38:30