C++模板技术让C++也能实现模板元编程,即在编译期间完成判断和计算。凡事总有特例,模板是为了匹配最一般的情况,但是针对特殊情况需要做优化,则需要特殊处理,这称为模板的特化。当模板特化后,一个调用可能会符合不同的模板,这样就需要选择正确的模板。C++中模板的匹配规则是:最特化匹配。下面是是示例程序:
#include <iostream>
// General case
template<typename T0, typename T1, typename T2>
struct S {
void id() { std::cout<<"General"<<std::endl;}
};
// Special case 1
template<typename T0, typename T1>
struct S<T0, T1, char> {
void id() { std::cout<<"Special case #1"<<std::endl;}
};
// Special case 2
template<typename T0>
struct S<T0, char, char> {
void id() {std::cout<<"Special case#2"<<std::endl;}
};
// Special case 3
template<typename T>
struct S<int, T, T> {
void id() {std::cout<<"Special case #3"<<std::endl;}
};
int main(int argc, char**argv) {
S<float, float, float&