Namespaces
Variants

C++ named requirements: BinaryPredicate

From cppreference.net
C++ named requirements

BinaryPredicate は、標準ライブラリ機能の一部がユーザー提供の引数に期待する要件の集合です。

二項述語 BinaryPredicate bin_pred と、イテレータのペア iter1 および iter2 、またはイテレータ iter と( const 修飾可能性のある)値 value が与えられたとき、式 bin_pred ( * iter1, * iter2 ) またはそれぞれ bin_pred ( * iter, value ) の型と値カテゴリは、 BooleanTestable の要件を満たさなければならない。

さらに、その式の評価は逆参照されたイテレータの非constメンバ関数を呼び出すことを許可されません。構文的には、述語は const オブジェクト引数を受け入れなければならず、その引数が const であるか非 const であるかに関わらず同じ動作をしなければなりません。

要件

標準ライブラリ

以下の標準ライブラリ機能は、 Compare 型ではない BinaryPredicate を期待します。

連続する重複要素を削除する
( std::forward_list<T,Allocator> の公開メンバ関数)
連続する重複要素を削除する
( std::list<T,Allocator> の公開メンバ関数)
特定の範囲内で要素の最後のシーケンスを検索する
(関数テンプレート)
要素の集合のいずれかを検索する
(関数テンプレート)
等しい(または指定された述語を満たす)最初の2つの隣接する要素を検索する
(関数テンプレート)
2つの範囲が異なる最初の位置を検索する
(関数テンプレート)
2つの要素の集合が同じかどうかを判定する
(関数テンプレート)
シーケンスが別のシーケンスの順列かどうかを判定する
(関数テンプレート)
要素の範囲の最初の出現を検索する
(関数テンプレート)
範囲内で要素の連続するコピーの最初の出現を検索する
(関数テンプレート)
範囲内の連続する重複要素を削除する
(関数テンプレート)
連続する重複を含まない要素の範囲のコピーを作成する
(関数テンプレート)
(C++17で非推奨) (C++20で削除)
カスタム std::binary_negate オブジェクトを構築する
(関数テンプレート)
キーでハッシュ化された一意のキーのコレクション
(クラステンプレート)
キーでハッシュ化されたキーと値のペアのコレクション、キーは一意
(クラステンプレート)
キーでハッシュ化されたキーのコレクション
(クラステンプレート)
キーでハッシュ化されたキーと値のペアのコレクション
(クラステンプレート)

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2114
( P2167R3 )
C++98 戻り値型の bool への変換性が実装の期待を
反映するには弱すぎた
要件を強化
LWG 3031 C++98 const 値に対する要件が不十分だった 要件を強化