我试图学习boost.variant。但是,我从书中复制的代码将无法通过编译:编译错误使用boost :: variant
class var_print : public boost::static_visitor<void>
{
public:
template<typename T>
void operator()(T &i) {
i *= 2;
cout<<i<<endl;
}
};
以下是我如何使用它的方法。在 '我* = 2'
即困惑我不匹配关于 '运算符* =' 中,由于模板函数将确定的类型:
typedef boost::variant<int,double,string> var_t;
var_t v(1); //v->int
boost::apply_visitor(var_print(),v);
编译器生成以下错误:
ERROR无论何时调用参数,int都应该定义运算符* =。
是的,但是''v''不是一个整数,它是'boost :: variant'。 –
@Joachim没关系:'v'不是函数参数。 –