私は構造体Aを持っています:
struct A
{
//some implementation
}
私のブーストバリアントは次のとおりです。
boost::variant<double, A> v1 = 1.0;
boost::variant<double, A> v2 = 2.0;
私の訪問者ファンクターは次のように定義されています。
class SomeWork:
public boost::static_visitor<int>
{
public:
int operator()(const A& data1, const A& data2) const
{
//some work
return 1;
}
int operator()(const double& data1, const double& data2) const
{
//some work
return 2;
}
};
int main()
{
boost::variant<double, A> v1 = 1.0;
boost::variant<double, A> v2 = 2.0;
boost::apply_visitor(SomeWork(), v1 ,v2);
return 0;
};
上記を実行すると、次のようなエラーが表示されます。
error C2664: 'int SomeWork::operator ()(const A&, const A&) const': cannot convert argument 2 from 'T' to 'const double &'
なぜこれが起こっているのか分かりません。
私が使用しているブーストバージョンは107200です
前もって感謝します。