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 (特に指定がない限り)
標準ライブラリ
以下の標準ライブラリ機能は、 Compare 型ではない BinaryPredicate を期待します。
|
連続する重複要素を削除する
(
std::forward_list<T,Allocator>
の公開メンバ関数)
|
|
|
連続する重複要素を削除する
(
std::list<T,Allocator>
の公開メンバ関数)
|
|
|
特定の範囲内で要素の最後のシーケンスを検索する
(関数テンプレート) |
|
|
要素の集合のいずれかを検索する
(関数テンプレート) |
|
|
等しい(または指定された述語を満たす)最初の2つの隣接する要素を検索する
(関数テンプレート) |
|
|
2つの範囲が異なる最初の位置を検索する
(関数テンプレート) |
|
|
2つの要素の集合が同じかどうかを判定する
(関数テンプレート) |
|
|
(C++11)
|
シーケンスが別のシーケンスの順列かどうかを判定する
(関数テンプレート) |
|
要素の範囲の最初の出現を検索する
(関数テンプレート) |
|
|
範囲内で要素の連続するコピーの最初の出現を検索する
(関数テンプレート) |
|
|
範囲内の連続する重複要素を削除する
(関数テンプレート) |
|
|
連続する重複を含まない要素の範囲のコピーを作成する
(関数テンプレート) |
|
|
(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
値に対する要件が不十分だった
|
要件を強化 |