CPP Templates 之 局部类模板特化

/*局部的类模板特化
 *对于局部特化声明的参数列表和实参列表,存在一些约束。下面就是一些重要的约束:
 *1.局部特化的实参必须喝基本模板的相应参数在种类上(可以使类型,非类型或者模板)是匹配的
 *2.局部特化的参数列表不能具有缺省实参;但局部特化仍然可以使用基本类模板的缺省实参
 *3.局部特化的非类型实参只能是非类型值,或者是普通的非类型参数;而不能是更复杂的依赖型表达式
 *4.局部特化的模板实参不能和基本模板的实参列表完全相同(不考虑重新命名)
 *下面详细说明这些约束:
 */
template<typename T,int I = 3>
class S;

template<typename T>
class S<int,T>;//ERROR ,参数类型不匹配

template<typename T=int>
class S<T,10>;//error,不能具有缺省参数

template<int I>
class S<int,I*2>;//ERROR,不能有更复杂的依赖型表达式

template<typename U,int K>
class S<U,K>;//ERROR,局部特化和基本模板之间没有任何的区别
原文地址:https://www.cnblogs.com/bayonetxxx/p/1603531.html