reference_wrapper クラス

更新 : 2007 年 11 月

参照をラップします。

template<class Ty>
    class reference_wrapper
    : public unary_function<T1, Ret>        // see below
    : public binary_function<T1, T2, Ret>   // see below
    {
public:
    typedef Ty type;
    typedef T0 result_type;                 // see below

    explicit reference_wrapper(Ty&);

    Ty& get() const;
    operator Ty&() const;
    template<class T1, class T2, ..., class TN>
        typename result_of<T(T1, T2, ..., TN)>::type
        operator()(T1&, T2&, ..., TN&);

private:
    Ty *ptr; // exposition only
    };

解説

reference_wrapper<Ty> は、コピーによる構築と代入が可能であり、Ty 型のオブジェクトを指し示すポインタを保持します。

特化された型 reference_wrapper<Ty> は、型 Ty が次のいずれかに該当する場合にのみ、std::unary_function<T1, Ret> から派生されます (そのため、入れ子にされた型 result_type を Ret のシノニムとして定義し、入れ子にされた型 argument_type を T1 のシノニムとして定義しています)。

T1 型の引数を 1 つ受け取り、Ret を返す関数の型または関数の型へのポインタ。

メンバ関数 Ret T::f() cv へのポインタ (cv はメンバ関数の cv 修飾子、型 T1 は cvT*)。

unary_function<T1, Ret> から派生されたクラス型。

特化された型 reference_wrapper<Ty> は、型 Ty が次のいずれかに該当する場合にのみ、std::binary_function<T1, T2, Ret> から派生されます (そのため、入れ子にされた型 result_type を Ret のシノニムとして定義し、入れ子にされた型 first_argument_type を T1 のシノニムとして定義し、入れ子にされた型 second_argument_type を T2 のシノニムとして定義しています)。

T1 型と T2 型の 2 つの引数を受け取り、Ret を返す関数の型または関数の型へのポインタ。

メンバ関数 Ret T::f(T2) cv へのポインタ (cv はメンバ関数の cv 修飾子、型 T1 は cvT*)。

binary_function<T1, T2, Ret> から派生されたクラス型。

必要条件

ヘッダー : <functional>

名前空間 : std::tr1

参照

参照

<functional> (TR1)

cref 関数

ref 関数