<functional> (TR1)

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 です。

宣言

クラス

説明

bad_function_call クラス

無効な関数呼び出しを報告します。

function クラス

呼び出し可能オブジェクトのラッパーです。

hash クラス

値のハッシュ コードを計算します。

is_bind_expression クラス

型が bind の呼び出しによって生成されたかどうかをテストします。

is_placeholder クラス

型がプレースホルダーであるかどうかをテストします。

reference_wrapper クラス

参照をラップします。

result_of クラス

ラップされた呼び出し可能オブジェクトの戻り値の型です。

オブジェクト

説明

_1 オブジェクト

置き換え可能な引数のプレースホルダーです。

テンプレート関数

演算子

説明

operator== <functional>

呼び出し可能オブジェクトの等価比較を無効にします。

operator!= <functional>

呼び出し可能オブジェクトの不等価比較を無効にします。

関数

説明

bind 関数

呼び出し可能オブジェクトに引数をバインドします。

cref 関数

引数から const の reference_wrapper を構築します。

mem_fn 関数

単純な呼び出しラッパーを生成します。

ref 関数

引数から reference_wrapper を構築します。

swap 関数 <functional>

2 つの function オブジェクトを交換します。

参照

その他の技術情報

標準 C++ ライブラリ TR1 拡張リファレンス