[英]boost::tuple with member function pointer
由于某种原因,我收到此错误消息
类型为'void(S :: * const)()'和'void(S :: * const)()'的无效操作数到二进制'operator <'
对于此代码段:
#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文档非常严格地在元组中使用成员函数指针(除了它们是有效元素),所以我真的不知道可能是什么问题,或者这些“ const”限定词如何进入表达式。
有什么提示吗?
元组将尝试对函数指针进行比较,并且您只能比较函数指针是否相等。 请同时参考这个问题
函数指针在C ++中不具有可比性。 支持平等比较,但至少其中一个指针实际上指向虚拟成员函数(在这种情况下,结果未指定)的情况除外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.