Я пробовал boost-variant
с пользовательскими классами. Я понял, что безопасным способом доступа к содержимому класса является использование boost::static_visitor
. Вы знаете, почему приведенный ниже код не компилируется? Есть ли какие-либо требования к подписи/декларации boost::static_visitor
для использования?
Я нашел этот вопрос Почему я не могу посетить этот пользовательский тип с boost::variant?, но я его не понял.
С Уважением
АФГ
#include <iostream>
#include <algorithm>
#include <boost/variant.hpp>
struct CA{};
struct ca_visitor : public boost::static_visitor<CA>
{
const CA& operator()(const CA& obj ) const { return obj;}
};
struct CB{};
struct cb_visitor : public boost::static_visitor<CB>
{
const CB& operator()(const CB& obj) const { return obj;}
};
int main(){
typedef boost::variant<
CA
,CB > v_type;
v_type v;
const CA& a = boost::apply_visitor( ca_visitor(), v );
}