c++ - 关于二元谓词比较
问题描述
我的参考是在std::lower_bound等Compare 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
等价于copy
for呢?Type1
解决方案
推荐阅读
- c# - 如何匹配字符串的一部分并拒绝整个字符串?
- javascript - 在 django 中刷新传单地图
- c - 分配 char*[] 结构数据元素会给出警告
- java - 从 CompletableFuture 调用 ExecutorService.shutdownNow
- batch-file - 通过 SAS 执行 bat 文件
- html - 带有空白页面和 repo 链接的 Github 页面。不加载页面
- c# - MVC Razor 表单按钮未调用指定的控制器
- python - 我想在 python 中打印“\”字符,但得到“\\”
- android - android.view.View$OnUnhandledKeyEventListener
- php - PHP 7.2 计数错误