<functional> (TR1)
更新 : 2007 年 11 月
operator() を定義する型のオブジェクトである関数オブジェクトを構築するための各種テンプレートを定義します。関数オブジェクトの代わりに、関数ポインタを使用することもできますが、一般的には、関数の呼び出し時にアクセスできる追加情報を保持するために関数オブジェクトが使用されます。
#include <functional>
解説
TR1 を使用することにより次の機能が追加されます。
呼び出しシグネチャ : 戻り値の型の名前。その後に、かっこで囲まれ、コンマで区切られた 0 個以上の引数の型のリストが記述されます。
呼び出しラッパー : 呼び出しラッパー型のオブジェクト。
呼び出しラッパー型 : 呼び出し可能オブジェクトを保持し、呼び出し操作をそのオブジェクトに転送する機能を持った型。
呼び出し可能オブジェクト : 呼び出し可能型のオブジェクト。
呼び出し可能型 : 関数へのポインタ、メンバ関数へのポインタ、メンバ データへのポインタ、またはオブジェクトを関数呼び出し演算子の直前に記述できるクラス型。
ターゲット オブジェクト : 呼び出しラッパー オブジェクトが保持する呼び出し可能オブジェクト。
疑似関数 INVOKE(f, t1, t2, ..., tN) は、次のいずれかのことを意味します。
(t1.*f)(t2, ..., tN): f が、クラス T のメンバ関数へのポインタであり、なおかつ、t1 が、T 型のオブジェクト、T 型のオブジェクトへの参照、または、T の派生型のオブジェクトへの参照である場合。
((*t1).*f)(t2, ..., tN): f が、クラス T のメンバ関数へのポインタであり、なおかつ、t1 が前述のいずれの型にも該当しない場合。
t1.*f: f が、クラス T のメンバ データへのポインタであり、なおかつ、t1 が、T 型のオブジェクト、T 型のオブジェクトへの参照、または、T の派生型のオブジェクトへの参照である場合。
(*t1).*f: f が、クラス T のメンバ データへのポインタであり、なおかつ、t1 が前述のいずれの型にも該当しない場合。
f(t1, t2, ..., tN) : 上記のいずれのケースにも該当しない場合。
疑似関数 INVOKE(f, t1, t2, ..., tN, R) は、暗黙的に R へと変換された INVOKE(f, t1, t2, ..., tN) を意味します。
呼び出しラッパーに弱い結果型が存在する場合、そのメンバ型 result_type の型は、次のように、ラッパーのターゲット オブジェクトの T 型に基づいて決まります。
T が関数へのポインタである場合、result_type は、T の戻り値の型のシノニムです。
T がメンバ関数へのポインタである場合、result_type は、T の戻り値の型のシノニムです。
T がデータ メンバへのポインタである場合、result_type は、そのデータ メンバの宣言型のシノニムです。
T がメンバ型 result_type を持つクラス型である場合、result_type は T::result_type のシノニムです。
それ以外の場合、メンバ result_type は存在しません。
すべての呼び出しラッパーには、コピー コンストラクタが存在します。代入演算子が 1 つだけ存在し、コピー コンストラクタと代入演算子からは例外が一切スローされない呼び出しラッパーを単純な呼び出しラッパーといいます。引数リスト t1, t2, ..., tN (ti は左辺値) を使って呼び出すことのできる呼び出しラッパーを転送呼び出しラッパーといいます。
このヘッダーで定義されている呼び出しラッパーは、0 <= N <= NMAX の場合、型 T1, T2, ..., TN の引数を受け取る関数呼び出し演算子をサポートしています。この実装では、NMAX の値は 10 です。
宣言
クラス |
説明 |
---|---|
無効な関数呼び出しを報告します。 |
|
呼び出し可能オブジェクトのラッパーです。 |
|
値のハッシュ コードを計算します。 |
|
型が bind の呼び出しによって生成されたかどうかをテストします。 |
|
型がプレースホルダであるかどうかをテストします。 |
|
参照をラップします。 |
|
ラップされた呼び出し可能オブジェクトの戻り値の型です。 |
オブジェクト |
説明 |
---|---|
置き換え可能な引数のプレースホルダです。 |
テンプレート関数
演算子 |
説明 |
---|---|
呼び出し可能オブジェクトの等価比較を無効にします。 |
|
呼び出し可能オブジェクトの不等価比較を無効にします。 |
関数 |
説明 |
---|---|
呼び出し可能オブジェクトに引数をバインドします。 |
|
引数から const の reference_wrapper を構築します。 |
|
単純な呼び出しラッパーを生成します。 |
|
引数から reference_wrapper を構築します。 |
|
2 つの function オブジェクトを交換します。 |