我有如下定义的模板函数“比较”。模板实例化错误
#include<iostream>
using namespace std;
template<typename T>
void compare(const T&a, const T& b)
{
cout<<"Inside compare"<<endl;
}
main()
{
compare("aa","bb");
compare("aa","bbbb");
}
当我实例化具有相同长度的字符串文字比较时,编译器不抱怨。当我这样做与不同长度的文字,它说:“错误:没有匹配的函数比较(const char [3],const char [5])”
我很困惑作为比较函数应该实例化字符指针而不是 字符数组。 不应该字符串文字总是衰减指针?
void compare(const T* a, const T* b)
的原因是,该种不同尺寸的字符数组的实际上是不同的类型:如果更改声明
@Greg,当前声明有什么问题? – chappar 2009-06-27 04:20:01
您所写的声明要求函数比较采用两个完全相同类型的参数。 “const char [3]”和“const char [5]”不是同一类型。 – 2009-06-27 04:22:38