template模板重载
模板重载首先要定义模板,然后才能重载,重在的意思就是对于特殊的类型,所产生的类应当行为与原模板产生的类不一致。
#include<iostream>
using namespace std;
struct bss{
};
template<class T1,class T2,class T3>
struct bar
{
void doStuff() { std::cout << "generic bar\n"; }
};
template<class T1>
struct bar<bss,int,T1>
{
void doStuff() { std::cout << "chong zai \n"; }
};
int main()
{
bar<bss,int,bss> a;
a.doStuff();
bar<int,int,bss> b;
b.doStuff();
return 0;
}
最后的输出结果可以看到,两种模板类的行为不一样
chong zai
generic bar