Boost::variant获取最后访问类型
boost::variant get last accessed type
这就是我想做的:
boost::variant a<int, string>;
int b;
a=4;
b=a; //doesn't work. What is the easiest way to make b=4?
我知道我可以使用get,但我希望能够在不指定类型的情况下做到这一点。我可以用apply_visitor和visitor对象来做,但我想知道是否有更简单的方法。
如果你有一个支持c++ 0x的编译器,你可以使用神奇的decltype
:
boost::variant a<int, string>;
int b;
a = 4;
b = boost::get<decltype(b)>(a);
我不知道你为什么要这样做,因为你已经知道了类型。
你可以写一个辅助函数:
template <class V, typename T>
copy_variant(const V& v, T& t) { t = get<T>(v); }
// ...
copy_variant(a, b);
但说真的,我觉得你花的钱比买到的要多。
不
您可以调用variant<>::which()
来获取variant<>
当前初始化类型的索引,或者调用variant<>::type()
来获取std::type_info
当前初始化类型的索引,但是除了get<>
和apply_visitor
之外,没有办法提取当前初始化类型的值。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 通过switch和static_cast访问多态对象的运行时类型
- 访问C++中的类型成员
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 使用 map.end() 访问 map 的最后一个元素
- OpenCV C++:当垫子类型未知时无法访问垫子元素?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 派生类的访问类型
- 返回对位字段的访问类型
- 有没有办法访问除最后一个模板参数之外的所有内容
- 我在spoj-lastdig2中使用我的代码 - 重新访问的最后一位数字
- 在不键入别名类型的完整声明的情况下,无法从类模板定义中访问类型的类型别名
- C++-如何获取结构的最后一个成员类型以及从现有对象访问它的方法
- 在编译时生成和访问类型列表
- 访问类型成员
- 如何在c++中更改继承类型的访问类型
- 使用传入的字符串形参来访问类型中的内容
- Boost::variant获取最后访问类型
- 如何访问类型为class的vector的vector中的value