C++模板功能专用:"非法使用显式模板参数"

jam*_*o00 20 c++ templates typename template-specialization

以下模板专业化代码:

template<typename T1, typename T2>
void spec1()
{

}
Run Code Online (Sandbox Code Playgroud)

测试案例1:

template< typename T1> //compile error
void spec1<int>()
{

}
Run Code Online (Sandbox Code Playgroud)

测试案例2:

template< typename T2> //compile error
void spec1<int>()
{

}
Run Code Online (Sandbox Code Playgroud)

生成以下编译错误:

错误C2768:'spec1':非法使用显式模板参数

有谁知道为什么?

Rüd*_*nke 52

功能模板不能完全专门化,只能完全,即:

template<>
void spec1<char, int>()
{

}
Run Code Online (Sandbox Code Playgroud)

为什么功能模板不能部分专业化,您可能想要阅读此内容.

当你专门部分(只适用于类)时,你必须这样做:

template <typename T1>
class class1<T1, int>
{

};
Run Code Online (Sandbox Code Playgroud)

所以你必须T1再次列出.

你的专业写作方式,他们将是模棱两可的spec1<int, int>.

  • 啊,我可以有部分专门的类嵌入静态函数? (3认同)