c++ - 取回原始类型的 boost 变体变量

标签 c++ c++11

你能帮我取回放入boost::variant中的原始对象的类型名吗?

我有这样的东西

typedef boost::variant<macro,module> ref_var;

是否可以取回原始对象的类型名?在这种情况下(宏或模块)

我试图用它来获取它

typeid(v).name()

但它给了我既​​不是宏也不是模块的奇怪名称:

PN5boost7variantI5macro6moduleNS_6detail7variant5void_ES5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_EE

你能帮忙吗?

最佳答案

variant::type() 返回变量内容的 std::type_info。只是不要使用它来选择如何对变体采取行动——这最好由访问者完成。

关于c++ - 取回原始类型的 boost 变体变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794027/

相关文章:

c++ - 常量字符串成员 : no appropriate default constructor available 出错

c++ - std::async int 函数可以在任务完成之前退出吗?

c++ - 按值或引用抛出异常

c++x11 中的 RInside 和 Rcpp

c++ - 消除 `boost::xtime`中的 `boost::condition::timed_wait`

c++ - 非 final方法去虚拟化

c++ - 虚函数上下文中的支配是什么?

c++ - 无法使用 static_cast 将枚举类转换为 int

c++ - 两个纳秒 chrono::time_points 之间的差异,但以秒为单位?

c++ - 类方法读取同一个变量的不同值 C++