function クラス
更新 : 2007 年 11 月
呼び出し可能オブジェクトのラッパーです。
template<class Fty>
class function // Fty of type Ret(T1, T2, ..., TN)
: public unary_function<T1, Ret> // when Fty is Ret(T1)
: public binary_function<T1, T2, Ret> // when Fty is Ret(T1, T2)
{
public:
typedef Ret result_type;
function();
function(const function& right);
template<class F>
function(F fn);
template<class F, class A>
function(F fn, A ator);
function(unspecified-null-pointer-type);
function& operator=(null_ptr_type);
function& operator=(const function&);
template<class Fty2>
function& operator=(Fty2);
template<class Fty2>
function& operator=(reference_wrapper<Fty2>);
void swap(function&);
operator unspecified() const;
result_type operator()(T1, T2, ....., TN) const;
const std::type_info& target_type() const;
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
private:
template<class Fty2>
bool operator==(const Fty2&) const; // undefined
template<class Fty2>
bool operator!=(const Fty2&) const; // undefined
};
パラメータ
- Fty
ラップする関数の型。
解説
このテンプレート クラスは、Ret(T1, T2, ..., TN) という呼び出しシグネチャを持つ呼び出しラッパーです。さまざまな呼び出し可能オブジェクトを同一のラッパーで包むことができます。
一部のメンバ関数には、適切なターゲット オブジェクトをオペランドとして指定する必要があります。その場合、オペランドは次のような方法で指定できます。
fn : 呼び出し可能オブジェクト fn。呼び出し後は、function オブジェクトが fn のコピーを保持します。
fnref : fnref.get() によって指定された呼び出し可能オブジェクト。呼び出し後は、function オブジェクトが fnref.get() への参照を保持します。
right : function オブジェクト right が保持する呼び出し可能オブジェクトとして (存在する場合)。
npc : null ポインタ。呼び出し後は、function オブジェクトが空になります。
いずれの場合も、INVOKE(f, t1, t2, ..., tN) (f は呼び出し可能オブジェクト、t1, t2, ..., tN はそれぞれ T1, T2, ..., TN 型の左辺値) の形式が有効である必要があります。Ret が void 以外である場合は、Ret に変換可能であることが必要です。
空の function オブジェクトは、呼び出し可能オブジェクトも、呼び出し可能オブジェクトへの参照も保持しません。
必要条件
ヘッダー : <functional>
名前空間 : std::tr1