#include <iostream>
using namespace std;
template<typename T>
bool isLess(T x, T y) {
cout << "general version\n";
return x < y;
}
template<>
bool isLess<int*>(int* x, int* y) {
cout << "specialization version\n";
return *x < *y;
}
int main() {
int n = 9, m = 3;
cout << isLess(n, m) << endl;这个是匹配是int类型的模板类
cout << isLess(&n, &m) << endl;//这个是匹配的模板类中的指针类型,因为我们已经替编译器实现啦指针类型,所有他就用我们的实现的啦,就不自己创建啦
}
一旦为某个模板做了特化,编译器将不会再为该特化所涉及的类型生成对应的实例化
特化目的是为了解决通用模板不能精确解决的问题
模板的特化版本依赖于通用模板,通用模板必须在所有特化模板之前声明(定义)