2013-02-13 33 views
14

引数としてstl containerを持つ関数ポインタのtypedefを作りたいと思います。このようなもの:テンプレート引数を持つ関数ポインタのtypedefを定義する方法

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

可能ですか? (特にC++ 03で)

+2

ない、いや、ブーストまたは何かがトリックアップの袖を持っていない限り。 – chris

+1

あなたが書いたことに間違いはありませんが、 'T'が宣言されているコンテキスト(関数またはクラステンプレート)にいなければなりません。 –

+0

私はグローバルな静的関数 – strobe

答えて

27

私はまさにそのような任意のC++ 03溶液を知らない、それは言語に組み込まれていないが、C++ 11で、これはusingの別名を持つことも可能である。

C++ 03のための
template<typename T> 
using TouchCallBack = void (*)(GLRenderer*, const MotionEvent&, std::vector<T >); 

回避策の一つは、構造体を使用している:

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

//use like TouchCallBack<int>::type