出于某种原因,我收到此错误消息
类型的无效操作数' 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;限定词进入表达式。
任何提示?
答案 0 :(得分:2)
元组将尝试对函数指针进行比较,并且只能比较函数指针的相等性。另请参阅this question
函数指针在C ++中没有关系可比性。支持等式比较,除了至少有一个指针实际指向虚拟成员函数的情况(在这种情况下结果未指定)。