C ++函数指针作为默认模板参数

时间:2010-12-15 12:20:05

标签: c++ templates arguments default function-pointers

如何将函数指针编写为默认模板参数,我猜这样写:

template<typename R,
         typename A,
         typename F=R (*PF)(A)> 
class FunctionPtr { ...

我的问题是,

1.可能吗?

2.如果是,我上面的猜测代码是正确的,PF的目的是什么?我需要这个吗?

3 个答案:

答案 0 :(得分:3)

  1. 不,你不需要PF。

    template<typename R,
             typename A,
             typename F=R (*)(A)> 
    

答案 1 :(得分:2)

  1. 是的,有可能
  2. PF不仅无用,而且必须在此上下文中删除。例如,它在函数指针声明的上下文中是必要的:

    int (*PF)(double) = &A::foo; // declares a 'PF' variable of type 'int (*)(double)'
    

    但这里既不需要也不合法。

答案 2 :(得分:0)

我建议typedef指向函数的指针。 typedef R (*PF)(A);然后将PF作为默认模板参数。