完全专用的类模板的函数模板的显式特化

时间:2015-11-27 00:41:43

标签: c++ templates template-specialization

我正在尝试在类模板的特化中专门化一个函数,但无法找到正确的语法:

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专门针对charFoo专门针对int。但是编译器不喜欢我写的东西。那么什么应该是正确的语法?

1 个答案:

答案 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>();
}