关于二元谓词比较

时间:2019-10-02 03:39:54

标签: c++ c++11 compare

我的参考是在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

0 个答案:

没有答案
相关问题