我的参考是在std::lower_bound等的重载中预期的二进制谓词Compare comp
:
说明如下:
谓词函数的签名应与 以下:
bool pred(const Type1&a,const Type2&b);
虽然签名不需要具有const&,但函数必须 不修改传递给它的对象,并且必须能够接受所有 类型1的值(可能是const)和类型2的值 类别(因此,Type1&不允许,Type1也不允许,除非对于Type1 移动等同于复制(自C ++ 11起)。
我对描述的以下部分感到有些困惑(看起来是矛盾的?):
...该函数不得修改传递给它的对象,并且必须 能够接受Type1和Type2类型的所有值(可能是const) 无论值类别为何(因此,不允许使用Type1&, Type1,除非Type1的移动等效于副本(自C ++ 11起)
如果函数应接受所有值类别,为什么不允许Type1
?另外,自C ++ 11起,为什么要允许move
的{{1}}等同于copy
?