将两个变体与boost static_visitor进行比较

时间:2012-11-03 22:07:22

标签: c++ boost boost-variant

我几天前开始使用boost库,所以我的问题可能很简单。 我想用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;
}

感谢您提供任何帮助或建议!

1 个答案:

答案 0 :(得分:1)

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;
   }   

};