2017-08-17 90 views
4

在下面的代码正常工作:偏特在C++中的模板:模板参数不可推论

template<typename T, int n> 
class Fib {}; 

template<typename T,int n> 
class Fib<T*,n> {}; 

但下面的代码显示错误为:

错误:模板参数部分特例不推断出:

template<typename T, int n> 
class Fib {}; 

template<typename T,int n> 
class Fib<T*,0> {}; 

你能解释这种现象的原因是什么?

+1

我想你已经知道了,但是专业化应该是'template class Fib {};'' – user463035818

回答

4

我相信你只是缺少了部分特正确的语法:

template<typename T, int n> 
class Fib { 

}; 

template<typename T> 
class Fib<T*,0> { 

}; 

在模板中的第一个参数的类型,而第二个仅仅是一个恒定值。