c ++模板中的部分特化:模板参数不可推导

时间:2017-08-17 16:29:11

标签: c++ c++11 templates

以下代码可以正常使用:

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 个答案:

答案 0 :(得分:4)

我相信你只是缺少部分专业化的正确语法:

template<typename T, int n> 
 class Fib {

 };

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

 };

模板上的第一个参数是type,而第二个参数只是一个常量值。