模板函数指针
Template function pointer
假设我们有通用函数指针:
template <class ArgT, class RetT, class F>
struct A {
F f;
public:
A(F f) : f(f) {}
RetT operator()(ArgT arg) { return f(arg); }
};
为什么这样做有效?
template <class ArgT, class RetT, class F>
class B {
A<ArgT, RetT, F> test;
};
...这不是吗?
class C {
template <class ArgT, class RetT, class F>
A<ArgT, RetT, F> test;
};
error C3857: 'C::test': 不允许使用多个模板参数列表
我需要像上一个示例 (class C) 那样定义一个 class,我该怎么做?
因为变量不能有模板。事实上只是 类 和函数可以有模板。
编辑:正如 Alan Stokes 所说,在 C++14 中,变量也可以有模板。
假设我们有通用函数指针:
template <class ArgT, class RetT, class F>
struct A {
F f;
public:
A(F f) : f(f) {}
RetT operator()(ArgT arg) { return f(arg); }
};
为什么这样做有效?
template <class ArgT, class RetT, class F>
class B {
A<ArgT, RetT, F> test;
};
...这不是吗?
class C {
template <class ArgT, class RetT, class F>
A<ArgT, RetT, F> test;
};
error C3857: 'C::test': 不允许使用多个模板参数列表
我需要像上一个示例 (class C) 那样定义一个 class,我该怎么做?
因为变量不能有模板。事实上只是 类 和函数可以有模板。
编辑:正如 Alan Stokes 所说,在 C++14 中,变量也可以有模板。