C++ named requirements: BinaryPredicate
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BinaryPredicate 是一组由某些标准库设施对用户提供的参数所期望的要求。
给定一个
二元谓词
bin_pred
和一对迭代器
iter1
与
iter2
,或一个迭代器
iter
和一个(可能为
const
的)值
value
,表达式
bin_pred
(
*
iter1,
*
iter2
)
或相应的
bin_pred
(
*
iter, value
)
的类型和值类别必须满足
布尔可测试
要求。
此外,该表达式的求值不允许调用解引用迭代器的非const成员函数;从语法上讲,谓词必须接受
const
对象参数,且无论其参数是
const
还是非
const
,其行为必须保持一致。
要求
- Predicate
- CopyConstructible (除非另有说明)
标准库
以下标准库设施期望一个BinaryPredicate,它不是一个Compare类型。
| 移除连续的重复元素 (的公开成员函数 std::forward_list<T,Allocator>)
| |
| 移除连续的重复元素 (的公开成员函数 std::list<T,Allocator>)
| |
| 查找某一范围中元素的最后序列 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 搜索集合中的任意一个元素 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 查找前两个相等(或满足给定谓词)的相邻元素 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 查找两个范围相异的首个位置 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 确定两个元素集合是否相同 (函数模板 & 算法函数对象) | |
(C++20) |
|
(C++11) |
确定一个序列是否为另一个序列的排列 (函数模板 & 算法函数对象) |
(C++20) |
|
| 搜索某个元素范围的首次出现 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 搜索范围内某个元素的连续多次出现的首次出现 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 移除范围内连续的重复元素 (函数模板 & 算法函数对象) | |
(C++20) |
|
| 创建某个范围的副本,其中不包含连续重复的元素 (函数模板 & 算法函数对象) | |
(C++20) |
|
(自C++17弃用)(自C++20移除) |
构造自定义的std::binary_negate对象 (函数模板) |
(C++11) |
唯一键的集合,由键哈希 (类模板) |
(C++11) |
键值对的集合,由键哈希,键唯一 (类模板) |
(C++11) |
键的集合,由键哈希 (类模板) |
(C++11) |
键值对的集合,由键哈希 (类模板) |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
返回类型到
bool
的可转换性要求过弱
未能反映实现预期 |
强化要求规范 |
| LWG 3031 | C++98 |
对
const
值的要求不足
|
强化要求规范 |