web-dev-qa-db-ja.com

テンプレート引数を持つ関数ポインタのtypedefを定義する方法

Stlコンテナを引数として、このコンテナの型が不明な関数ポインタのtypedefを作成したいと思います。このようなもの:

typedef void (* TouchCallBack)(GLRenderer*, const MotionEvent&, std::vector<T >);

それが可能だ? (特にc ++ 03で)

18
strobe

私はそのようなC++ 03ソリュ​​ーションをまったく知りません、そしてそれは言語に組み込まれていません、しかしC++ 11では、これはusingエイリアスで可能です:

template<typename T>
using TouchCallBack = void (*)(GLRenderer*, const MotionEvent&, std::vector<T >);

C++ 03の回避策の1つは、構造体を使用することです。

template<typename T>
struct TouchCallBack {
    typedef void (*type)(GLRenderer*, const MotionEvent&, std::vector<T >);
};

//use like TouchCallBack<int>::type
31
chris