c++ - boost::variant 获取最后访问的类型

标签 c++ boost boost-variant

这就是我想要做的:

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 和访问者对象来实现,但我想知道是否有更简单的方法。

最佳答案

如果你有一个支持 C++0x 的编译器,你可以使用神奇的 decltype:

boost::variant a<int, string>;
int b;
a = 4;
b = boost::get<decltype(b)>(a);

我不知道你为什么要这样做,因为你已经知道类型了。

关于c++ - boost::variant 获取最后访问的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048201/

相关文章:

c++ - ","的 QSettings::IniFormat 值作为 QStringList 返回

c++ - C++ 中的指针和引用错误

c++ - 有什么方法可以确保我的函数是最后一个被调用的函数吗?

c++使用BOOST/STL/etc从文件中读取格式化的表格数据

c++ - 如何修改boost::apply_visitor返回值?

c++ - 是否有一个标准容器允许在不使迭代器失效的情况下插入元素?

c++ - 如何释放 boost::mpi::request?

c++ - 使用预处理器而不是可变参数模板构建的 Boost 变体

c++ - boost::make_recursive_variant 没有名为 'apply_visitor' 的成员

C++:嵌套映射