名前空間
変種
操作

std::Predicate

提供: cppreference.com
< cpp‎ | concepts
ヘッダ <concepts> で定義
template < class F, class... Args >

concept Predicate =
  std::RegularInvocable<F, Args...> &&

  std::Boolean<std::invoke_result_t<F, Args...>>;
(C++20以上)

コンセプト Predicate<F, Args...>FArgs... にエンコードされている型および値カテゴリを持つ引数を取る述語である、すなわち Boolean の結果を生成するためにこれらの引数で呼び出せることを表します。

RegularInvocable は呼び出しが呼び出し可能なオブジェクトも引数も変更せず等しさを維持することを要求します。

[編集] 等しさの維持

等しい入力を与えると等しい出力が得られる場合、その式は等しさを維持します。

  • 式への入力がその被演算子から構成される。
  • 式の出力がその結果およびその式によって変更されるすべての被演算子 (もしあれば) から構成される。

等しさを維持することが要求されるすべての式は、さらに安定であることも要求されます。 同じ入力オブジェクトを用いたそのような式の2回の評価は、間にそれらの入力オブジェクトの変更が明示的に挟まれなければ、等しい出力が得られなければなりません。