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

参照

参照

<functional> (TR1)

mem_fn 関数

reference_wrapper クラス