Namespaces
Variants

std::experimental::ranges:: Predicate

From cppreference.net
template < class F, class ... Args >

concept bool Predicate =
RegularInvocable < F, Args... > &&

Boolean < std:: result_of_t < F && ( Args && ... ) >> ;
(ranges TS)

概念 Predicate<F, Args...> は、 F が引数の型と値カテゴリが Args... によってエンコードされた述語であることを指定します。すなわち、これらの引数で呼び出して Boolean の結果を生成できることを意味します。

RegularInvocable は、呼び出し可能オブジェクトまたは引数のいずれも変更せず、かつ等価性を保存することを要求することに注意してください。

等価性保存

式は、等しい入力が与えられた場合に等しい出力をもたらす場合、 equality preserving であると言います。

  • 式への入力は、そのオペランドで構成されます。
  • 式からの出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。

等価性を保持することが要求されるすべての式は、さらに stable(安定性) が要求されます:同じ入力オブジェクトに対するそのような式の2回の評価は、それらの入力オブジェクトに対する明示的な変更がない限り、等しい出力を持たなければなりません。