名前空間
変種
操作

C++ 名前付き要件: Predicate

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

Predicate 要件は、BooleanTestable 値を返す呼び出し可能なものを記述します。

Predicate は通常、入力データ(個々のオブジェクト/コンテナ)と述語を受け取り、その述語がさらなる行動を決定するために入力データに対して呼び出されるアルゴリズムとともに使用されます。C++ 標準ライブラリにおける述語の使用例をいくつか示します。

  • std::all_ofstd::any_ofstd::none_of は、要素の配列と述語を入力として取ります。個々の入力要素に対して述語を呼び出し、すべての/いずれかの/どの要素に対しても述語が true を返す場合は true を返します。
  • std::find_if は、要素のシーケンスと述語を取ります。シーケンス内で、述語が true に等しい値を返す最初の要素を返します。

上記で示されたアルゴリズム機能の説明は、Predicate を簡単な言葉で説明することを意図した、粗いものです。詳細については、個々のページを参照してください。

言い換えると、アルゴリズムが Predicate pred とイテレータ first を取る場合、イテレータ first が指す型のオブジェクトを、if (pred(*first)) { /*...*/ } のような構文で、指定された述語を使用してテストできる必要があります。

関数オブジェクト pred は、デリファレンスされたイテレータを通して非 const 関数を適用してはならず、const 引数を受け入れる必要があり、引数が const であるか非-const であるかに関わらず同じ動作をします。この関数オブジェクトは、関数へのポインタ、または適切な関数呼び出し演算子を持つ型のオブジェクトである可能性があります。

[編集] 要件

[編集] 不具合報告

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

DR 適用対象 公開された動作 正しい動作
LWG 3031 C++98 const 値に対する要件が不十分でした。 要件が強化された

[編集] 関連項目

(C++20)
呼び出し可能型が真偽値を返す述語 (Boolean predicate) であることを規定する
(コンセプト) [編集]
English 日本語 中文(简体) 中文(繁體)