C++ named requirements: Predicate
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
谓词 要求描述了一个可调用对象,该对象返回一个 布尔可测试 值。
谓词 通常与接受输入数据(单个对象/容器)和谓词的算法配合使用,该谓词随后会在输入数据上被调用以决定后续操作。C++标准库中使用谓词的一些示例如下:
- std::all_of , std::any_of , std::none_of 接受一个元素数组和一个谓词作为输入。对单个输入元素调用谓词,若所有/任一/没有元素使谓词返回 true,则相应返回 true。
- std::find_if 接收元素序列和一个谓词。返回序列中第一个使谓词返回值为 true 的元素。
上文对算法设施的说明较为粗略,旨在以浅显方式解释 谓词 概念。如需详细信息,请参阅各独立页面。
换句话说,如果某个算法接受一个
谓词
pred
和一个迭代器
first
,该算法应当能够通过类似
if
(
pred
(
*
first
)
)
{
/*...*/
}
的构造,使用给定谓词来测试由迭代器
first
指向的类型对象。
函数对象
pred
不应通过解引用迭代器应用任何非常量函数,且必须接受
const
参数,无论参数是
const
还是非常量,其行为都应保持一致。该函数对象可以是函数指针,也可以是具有适当函数调用运算符类型的对象。
要求
|
本节内容不完整
原因:需更准确地描述实际需求 |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 3031 | C++98 |
对
const
值的要求不足
|
强化了要求 |
参见
|
(C++20)
|
规定可调用类型为布尔谓词
(概念) |