名前空間
変種
操作

C++ の名前付き要件: BinaryPredicate

From cppreference.com
 
 
C++ 名前付き要件
 

BinaryPredicate は、標準ライブラリのいくつかの機能がユーザー提供の引数に期待する要件のセットです。

BinaryPredicate bin_pred と、イテレータのペア iter1iter2、またはイテレータ 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> のパブリックメンバ関数) [編集]
特定の範囲内で最後の要素のシーケンスを見つける
(関数テンプレート) [編集]
要素の集合のうちいずれか1つを検索する
(関数テンプレート) [編集]
等しい(または指定された述語を満たす)最初の2つの隣接する項目を見つける
(関数テンプレート) [編集]
2つの範囲が異なる最初の位置を見つける
(関数テンプレート) [編集]
2つの要素の集合が同じかどうかを判断する
(関数テンプレート) [編集]
あるシーケンスが別のシーケンスの順列であるかを判断する
(関数テンプレート) [編集]
要素の範囲の最初の出現を検索する
(関数テンプレート) [編集]
範囲内である要素が連続して出現する最初の箇所を検索する
(関数テンプレート) [編集]
範囲内の連続する重複要素を削除する
(関数テンプレート) [編集]
連続する重複を含まない要素の範囲のコピーを作成する
(関数テンプレート) [編集]
(C++17で非推奨)(C++20で削除)
カスタムの std::binary_negate オブジェクトを構築する
(関数テンプレート) [編集]
キーによってハッシュ化されたユニークなキーのコレクション
(クラステンプレート) [編集]
キーによってハッシュ化されたキーと値のペアのコレクション、キーはユニーク
(クラステンプレート) [編集]
キーのコレクション、キーによってハッシュ化される
(class template) [編集]
キーでハッシュ化されたキーと値のペアのコレクション
(クラステンプレート) [編集]

[編集] 欠陥報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2114
(P2167R3)
C++98 戻り値の型が bool に変換できることの要件が弱すぎた
実装の期待を反映するため
要件が強化された
LWG 3031 C++98 const 値に関する要件が不十分だった 要件が強化された
English 日本語 中文(简体) 中文(繁體)