0

私は構造体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です

前もって感謝します。

4

1 に答える 1