std::tr1::mem_fn は、メンバ関数を普通の関数のように呼び出すことができるようにする関数オブジェクトを返します。標準ライブラリにもよく似た std::mem_fun および std::mem_fun_ref というのがありますが、std::tr1::mem_fn はそれらを一般化したものであり、メンバ関数の呼び出し対象となるオブジェクトが、ポインタとして渡されるか参照として渡されるかによって、使い分ける必要がありません。

template<class R, class T> 未既定 mem_fn(R T::* pm);

mem_fn は、((*t).*pm)(a2, ..., aN) または (t.*pm)(a2, ..., aN) に等価な f(t, a2, ..., aN) という形式の呼出しが可能な関数オブジェクト f を返します。pm がメンバ関数へのポインタの場合、f は返却型を表す result_type という名のメンバ型を持ちます。

このエントリーを含むはてなブックマーク