C++ 命名要求: BinaryPredicate
来自 cppreference.com
BinaryPredicate 是一组标准库设施对其用户提供的参数所期望的要求。
给定一个 BinaryPredicate bin_pred
和一对迭代器 iter1
和 iter2
或一个迭代器 iter
和一个(可能为 const
)的值 value
,表达式 bin_pred(*iter1, *iter2) 或分别为 bin_pred(*iter, value) 的类型和值类别必须满足 BooleanTestable 要求。
此外,不允许该表达式的求值调用解引用迭代器的非 const 成员函数;从语法上讲,谓词必须接受 const
对象参数,无论其参数是 const
还是非 const
,都具有相同的行为。
[编辑] 要求
- Predicate
- CopyConstructible(除非另有说明)
[编辑] 标准库
以下标准库设施期望一个 BinaryPredicate,它不是 Compare 类型。
删除连续的重复元素 (public member function of std::forward_list<T,Allocator> ) | |
删除连续的重复元素 (public member function of std::list<T,Allocator> ) | |
在某个范围内找到最后一个元素序列 (function template) | |
搜索一组元素中的任何一个 (function template) | |
找到第一个相等(或满足给定谓词)的两个相邻项 (function template) | |
找到两个范围不同的第一个位置 (function template) | |
确定两组元素是否相同 (function template) | |
(C++11) |
确定一个序列是否是另一个序列的排列 (function template) |
搜索一组元素的第一个出现位置 (function template) | |
搜索某个范围内连续出现一个元素的次数 (function template) | |
删除某个范围内的连续重复元素 (function template) | |
创建某个元素范围的副本,该副本不包含连续的重复项 (function template) | |
(C++17 中已弃用)(C++20 中已移除) |
构造自定义 std::binary_negate 对象 (function template) |
(C++11) |
由键哈希的唯一键的集合 (class template) |
(C++11) |
由键哈希的键值对的集合,键是唯一的 (class template) |
(C++11) |
由键哈希的键的集合 (class template) |
(C++11) |
由键哈希的键值对的集合 (class template) |
[编辑] 缺陷报告
以下行为更改的缺陷报告被追溯地应用于以前发布的 C++ 标准。
DR | 应用于 | 发布的行为 | 正确的行为 |
---|---|---|---|
LWG 2114 (P2167R3) |
C++98 | 返回值类型到 bool 的可转换性太弱 无法反映实现的预期 |
要求得到加强 |
LWG 3031 | C++98 | 对 const 值的要求不足 |
要求得到加强 |