C++ named requirements: BinaryPredicate
BinaryPredicate は、標準ライブラリ機能の一部がユーザー提供の引数に期待する要件の集合です。
二項述語
BinaryPredicate
bin_pred
と、イテレータのペア
iter1
および
iter2
、またはイテレータ
iter
と(
const
修飾可能性のある)値
value
が与えられたとき、式
bin_pred
(
*
iter1,
*
iter2
)
またはそれぞれ
bin_pred
(
*
iter, value
)
の型と値カテゴリは、
BooleanTestable
の要件を満たさなければならない。
さらに、その式の評価は逆参照されたイテレータの非constメンバ関数を呼び出すことを許可されません。構文的には、述語は
const
オブジェクト引数を受け入れなければならず、その引数が
const
であるか非
const
であるかに関わらず同じ動作をしなければなりません。
要件
- Predicate
- CopyConstructible (特に指定がない限り)
標準ライブラリ
以下の標準ライブラリ機能は、BinaryPredicate(Compare型ではないもの)を期待します。
| 連続した重複要素を削除する (パブリックメンバ関数: std::forward_list<T,Allocator>)
| |
| 連続した重複要素を削除する (パブリックメンバ関数: std::list<T,Allocator>)
| |
| 特定の範囲内で要素の最後のシーケンスを検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 要素の集合のうちいずれか1つを検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 等しい(または指定された述語を満たす)最初の隣接する2つの要素を検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 2つの範囲が異なる最初の位置を検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 2つの要素の集合が同じかどうかを判定する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
(C++11) |
あるシーケンスが別のシーケンスの並べ替えであるかどうかを判定する (関数テンプレート & アルゴリズム関数オブジェクト) |
(C++20) |
|
| 要素の範囲の最初の出現を検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 範囲内で要素が連続して指定個数出現する最初の位置を検索する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 範囲内の連続した重複要素を削除する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 連続した重複を含まない要素範囲のコピーを作成する (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
(C++17で非推奨)(C++20で削除) |
カスタム std::binary_negate オブジェクトを構築する (関数テンプレート) |
(C++11) |
キーによってハッシュ化された一意のキーの集合 (クラステンプレート) |
(C++11) |
キーによってハッシュ化されたキーと値のペアの集合、キーは一意 (クラステンプレート) |
(C++11) |
キーによってハッシュ化されたキーの集合 (クラステンプレート) |
(C++11) |
キーによってハッシュ化されたキーと値のペアの集合 (クラステンプレート) |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
戻り値型の
bool
への変換性が実装の期待を
反映するには弱すぎた |
要件を強化 |
| LWG 3031 | C++98 |
const
値に対する要件が不十分だった
|
要件を強化 |