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

How to get a pointer to boost::variant's storage?

本文关键字:存储 指针 variant 取指 boost 何获      更新时间:2023-10-16

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

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

你可以写一个访问者来做这件事:

 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);
 }