我无法在类模板专业化中为模板化方法制作专门的模板。
假设我有以下代码:
#include <functional>
template<typename T>
class myClass {
public:
T bar() {
return T();
}
template<typename P>
bool foo(std::function<P(T)> g) {
g(bar());
return true;
}
};
如果我想为bar
专门设定myClass<void>
函数,我会这样做:
template<> void myClass<void>::bar() {
}
但是当我尝试以同样的方式专门化foo
时,我收到一个编译错误,说error: invalid parameter type ‘void’
并指向foo的原始定义。
template<>
template<typename P>
bool myClass<void>::foo(std::function<P(void)> g) {
bar();
g();
return true;
}
有人有任何建议吗,我做错了什么?