C++ 模板全特化中的函数特化

来源:互联网 发布:巨人网络通行证注册 编辑:程序博客网 时间:2024/06/15 07:21

转载:http://blog.csdn.net/rain_qingtian/article/details/15815251

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

原创粉丝点击