私は最近、以下のヘルパークラスを使用している場合、その関数ポインタの構文を簡素化することができるが見つかりました:メンバー関数のtypedefをヘルパーテンプレートクラスで簡略化できますか?
template<typename Sig>
struct Fun {
typedef Sig* Ptr;
};
次のようにそれは私にvoid()
へのポインタを許可します。
typedef Fun<void()>::Ptr fun_ptr;
fun_ptr f = foo;
私は似を作成したいですメンバー関数ポインタへのtypedefを作成するためのユーティリティ。しかし、私は、typedefの構文を把握することはできません
struct Foo {
void bar() {}
};
typedef MemFun<Foo, void()>::Ptr bar_type;
bar_type b = &Foo::bar;
:それは、次の構文を可能にする
template<class T, typename Sig>
struct MemFun {
// How to use T and Sig to create member function typedef?
};
誰でも助けることができますか?
'std :: function'に何か問題がありますか?あなたのツールチェーンが古代の場合は 'boost :: function' ...これは長い時間前に既に全てが発明されています。 –