如何获得指向boost :: variant存储的指针?

时间:2013-11-08 22:37:00

标签: c++ boost boost-variant

我有一个用例,我想处理boost::variant中包含的元素而不考虑其类型。

有没有办法在不知道元素类型的情况下获取指向variant数据的指针?

1 个答案:

答案 0 :(得分:1)

您可以写访问者来执行此操作:

 typedef boost::variant<T1,T2,T3> my_variant;
 void foo(my_variant v) {
      struct get_pointer: boost::static_visitor<void *> {
          template<class T>
          void *operator()(T &element) const 
          {
            return &element 
          }
      };
      get_pointer vis;
      void *data = boost::apply_visitor(vis, v);
 }