带成员函数指针的元组

boost::tuple with member function pointer

本文关键字:元组 指针 函数 成员      更新时间:2023-10-16

由于某些原因,我得到了这个错误信息

类型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++中没有相对可比性。支持相等比较,除非至少有一个指针实际指向虚成员函数(在这种情况下,结果未指定)。