具有模板参数的typedef函数指针

时间:2019-04-03 09:09:07

标签: c++ c++11

我想为以模板为参数的方法签名创建函数指针

Template<class T>
typedef int (*computeSizeFunc)(T data);

我尝试过,这是错误

 error: template declaration of 'typedef'
 typedef  int (*computeSizeFunc)(T data).

这是我要为其编写函数指针的方法签名

template<class T>
int getSize (T data)

3 个答案:

答案 0 :(得分:10)

您应该改用C ++ 11 type-alias声明:

template<class T>
using computeSizeFunc = int (*)(T data);

答案 1 :(得分:2)

typedef不允许使用template,您应该使用using

template<class T>
using computeSizeFunc = int (T data);

答案 2 :(得分:1)

作为C ++ 11之前版本替代其他方法的方法,您可以使用以下解决方法:

template< class Arg >
struct computeSizeFunc {
  typedef int (*funcImpl)(Arg data);
};