以下模板专业化代码:

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

}

测试案例1:

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

}

测试案例2:

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

}

生成以下编译错误:

  

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

有谁知道为什么?

有帮助吗?

解决方案

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

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

}

为什么功能模板不能部分专业化,您可能需要阅读本文

当你专门部署(只适用于课程)时,你必须这样做:

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

};

所以你必须再次列出 T1

编写专业化的方式,对于 spec1&lt; int,int&gt; ,它们将是不明确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top