使用成员函数指针的boost :: tuple

时间:2015-10-22 08:55:51

标签: c++ boost tuples member-function-pointers c++98

出于某种原因,我收到此错误消息

  

类型的无效操作数' void(S :: * const)()'和' void(S :: * const)()'到二进制'运算符<'

此代码段:

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_comparison.hpp>

struct S
{
    void f() {}
};

typedef void(S::*tdef)();

int main()
{
    boost::tuple<tdef> t1(&S::f);
    boost::tuple<tdef> t2(&S::f);
    return t1 < t2;
}

使用元组中的成员函数指针(除了它们是有效元素)之外,Boost文档非常守口如瓶,所以我不知道可能是什么问题或者那些&#39; const& #39;限定词进入表达式。

任何提示?

1 个答案:

答案 0 :(得分:2)

元组将尝试对函数指针进行比较,并且只能比较函数指针的相等性。另请参阅this question

  

函数指针在C ++中没有关系可比性。支持等式比较,除了至少有一个指针实际指向虚拟成员函数的情况(在这种情况下结果未指定)。