2013-11-08 1 views
0

У меня есть вариант использования, где я хотел бы обработать элемент, содержащийся в boost::variant, независимо от его типа.Как получить указатель на форматирование :: варианта хранения?

Есть ли способ получить указатель на данные variant, не зная тип элемента?

ответ

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

Спасибо, Джаред, для редактирования. –

Смежные вопросы