命名空间
变体
操作

std::predicate

来自 cppreference.cn
< cpp‎ | concepts
定义于头文件 <concepts>
template< class F, class... Args >

concept predicate =
    std::regular_invocable<F, Args...> &&

    boolean-testable<std::invoke_result_t<F, Args...>>;
(自 C++20 起)

概念 std::predicate 指定 F 是一个谓词,它接受参数,这些参数的类型和值类别由 Args... 编码,即,它可以使用这些参数调用以产生一个 boolean-testable 结果。

注意 regular_invocable 要求调用既不修改可调用对象也不修改参数,并且是 equality-preserving 的。

[编辑] 等式保持

在标准库概念的 requires 表达式中声明的表达式需要是 equality-preserving 的(除非另有说明)。

[编辑] 参考

  • C++23 标准 (ISO/IEC 14882:2024)
  • 18.7.4 概念 predicate [concept.predicate]
  • C++20 标准 (ISO/IEC 14882:2020)
  • 18.7.4 概念 predicate [concept.predicate]