我正在尝试在类模板的特化中专门化一个函数,但无法找到正确的语法:
template< typename T >
struct Foo {};
template<>
struct Foo< int >
{
template< typename T >
void fn();
};
template<> template<>
void Foo< int >::fn< char >() {} // error: too many template-parameter-lists
我在这里尝试fn
专门针对char
,Foo
专门针对int
。但是编译器不喜欢我写的东西。那么什么应该是正确的语法?
答案 0 :(得分:6)
你不必说你专攻两次。
您只是在这里专门设计一个功能模板
template<> void Foo<int>::fn<char>() {}
<强> Live On Coliru 强>
template< typename T >
struct Foo {};
template<>
struct Foo< int >
{
template< typename T >
void fn();
};
template<> void Foo<int>::fn<char>() {}
int main() {
Foo<int> f;
f.fn<char>();
}