繁体   English   中英

C ++模板功能的专业化:“非法使用显式模板参数”

[英]C++ template specialization of function: “illegal use of explicit template arguments”

以下模板专用代码:

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<int, int>来说是模棱两可的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM