Сравните два варианта с бустом static_visitor

Я начал использовать библиотеку наддува несколько дней назад, поэтому мой вопрос может быть тривиальным.
Я хочу сравнить два варианта одного типа с static_visitor. Я попробовал следующее, но не хочу компилировать.

struct compare:public boost::static_visitor<bool>
{
bool operator()(int& a, int& b) const
{
return a<b;
}

bool operator()(double& a, double& b) const
{
return a<b;
}
};
int main()
{
boost::variant<double, int > v1, v2;
v1 = 3.14;
v2 = 5.25;
compare vis;
bool b = boost::apply_visitor(vis, v1,v2);
cout<<b;
return 0;
}

Спасибо за любую помощь или предложение!

3

Решение

llonesmiz сказал мне ответ в комментарии, но он исчез. Если у кого-то есть подобная проблема, это может помочь:
Мне приходилось обрабатывать каждую комбинацию int и double в разных операторах. Самый простой способ реализовать это — использовать шаблоны, например так:

struct my_less : boost::static_visitor<bool>
{
template<typename T, typename U>
bool operator()(T a, U b) const
{
return a<b;
}

};
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector