繁体   English   中英

具有成员函数指针的boost :: tuple

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM