我試圖學習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'不是函數參數。 –