[英]why Specialized template class need forward declaration?
这是代码:
template<typename,int> class Uoo; //without this will result in complie error,why?
template<typename T>
class Uoo<T,1>
{
};
int main(){
return 0;
}
为什么专用模板类需要前向声明?
以下代码是模板的特殊化 。
template<typename T>
class Uoo<T,1>
{
};
但是您还没有说出非专业化的形式,这种语言要求您这样做。 因此,您需要添加原型:
template<typename,int> class Uoo;
实际上,您实际上不需要声明非专业形式,因为从不需要它的实例。 因此,原型就足够了。
这实际上不是您要进行的前向声明。 您要做的是先定义模板化类的“模式”, 然后定义一个专门的上下文或版本。 更好的问题是,如果您没有非专业的案例,那么第二个模板参数的意义是什么?
如所声明的, template<typename T> class Uoo<T,1>
是template<typename,int> class Uoo
的部分专业化; 它将int参数固定为1。它不能是不存在的模板的部分专业化。
您可以通过编写使“真实”类模板自给自足
template<typename T>
class Uoo
{
...
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.