#include <iostream>
using namespace std;
template <typename T> void compare(const T&, const T&){
cout<<"T"<<endl;
}
void compare(const char*, const char*){
cout<<"const char*"<<endl;
}
int main()
{
char a[]="123";
char b[]="123";
char *p1 = a, *p2 = b;
compare(p1,p2);
return 0;
}
结果是:T
但为什么?实例化后模板函数可能是这样的:
比较(常量字符*&,常量字符*&)
与普通功能相同。应该调用普通函数!