说来汗颜,好多不知道的东西啊。今天到公司培训了一天,培训期间领导提起了模板的偏特化,我只好再来补习知识了。现在有点浮躁,转载一篇模板偏特化例子的文章,原文链接如下:http://www.cnblogs.com/c007136/archive/2012/05/31/2529073.html,感谢。特别要主要,模板函数不能偏特化,只能全特化或者重载。
追加一篇文章链接,也是偏特化的:http://www.cnblogs.com/cutepig/archive/2009/02/12/1389479.html,希望对我自己有帮助。
文章如下:
模板的特化与偏特化
实话实说,模板用得特别少,语法上的使用都相当生疏。
#include <iostream> using namespace> b; return>0;> b[i]; } return>"aaaaa"; char>"BBBBB"; Addition<char *> B; >"sssss"; string>"ddddd"; Addition<string &> C; >0; i < (int)v1.size(); ++i ) { cout << v1[i] << " "; } cout << endl; return 0; }
甚为有意思的是这样的一个语法:
template<class T1, class T2> class A { } /* ** 注意是template<class T1> ** 而不是template<class T1, class T2> */ template<class T1> class A<T1, int> { }
讲完类模板的特化,有必要讲讲函数模板的特化。函数模板与类模板的一个区别是:函数模板无法偏特化,只能重载。
#include <iostream> using namespace> b; return> b; return>"aaa"; string>"BBB"; cout << fun( str1, str2 ) << endl; cout << fun2( str1, str2 ) << endl; return 0; }