这是C++ Primer第4版第16章的一个例子,它是关于模板专业化的.
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
template <class T>
int compare(const T& v1, const T& v2) {
if(v1<v2) return -1;
if(v2<v1) return 1;
return 0;
}
template <>
int compare<const char*>(const char* const &v1, const char* const &v2){
return strcmp(v1,v2);
}
int main(int argc, const char *argv[])
{
cout << compare("abc","defg") << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望compare("abc","defg")能够调用模板的专用版本.但事实是,g ++ 4.6.3将无法编译此代码并给出以下错误:
错误:没有匹配函数来调用'compare(const char [4],const char [5])'
注意:候选者是:template int compare(const T&,const T&) …