首页 > 解决方案 > 关于二元谓词比较

问题描述

我的参考是在std::lower_boundCompare comp的重载中预期的二进制谓词:

描述如下:

谓词函数的签名应等同于以下内容:

bool pred(const Type1 &a, const Type2 &b);

虽然签名不需要 const &,但该函数不得修改传递给它的对象,并且必须能够接受所有类型的值(可能是 const)Type1 和 Type2,而不管值类别如何(因此,不允许使用 Type1 & , Type1 也不是,除非 Type1 的移动等价于副本 (C++11 起))。

我对描述的以下部分感到有些困惑(这似乎是矛盾的?):

...该函数不得修改传递给它的对象,并且必须能够接受类型(可能是 const)Type1 和 Type2 的所有值,而不管值类别如何(因此,不允许 Type1 &,除非 Type1 a move 等价于副本 (C++11 起))

如果函数应该接受所有值类别,为什么Type1不允许?另外,既然 C++11 ,为什么要允许 amove等价于copyfor呢?Type1

标签: c++c++11compare

解决方案


推荐阅读