模板的特化(模板参数列表指定特定类型)
首先定义一个模板:
template<typename A,typename B>
class test
{
//泛化实现代码
}
然后特化模板:
template<> //尖括号中不带任何类型,也即原模板中的参数列表都将被特化
class test<Cat,Dog>//A、B用Cat,Dog特化
{
//特化实现代码
}
在以后使用test时,若为 test<Cat,Dog>则表示执行特化实现的代码,若传入其他实参,则表示执行泛化实现的代码
模板的偏特化(模板参数列表中部分参数指定特定类型)
template<typename A>
class test<A,Dog>
{
//偏特化实现代码
}
A为任意类型(除Cat),test<A,Dog>将执行偏特化中的代码