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

Ach*_*ich 5 c++ templates c++11

下面的代码工作正常:

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

template<typename T,int n>
class Fib<T*,n> {}; 
Run Code Online (Sandbox Code Playgroud)

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

错误:模板参数在部分特化中不可推导:

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

 template<typename T,int n>
 class Fib<T*,0> {};
Run Code Online (Sandbox Code Playgroud)

你能解释这种行为的原因吗?

小智 4

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

template<typename T, int n> 
 class Fib {

 };

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

 };
Run Code Online (Sandbox Code Playgroud)

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