提问者:小点点

模板<typename t>中的类型参数int compare(const t&,const t&)


如果定义以下函数模板

template<typename T>
int compare(const T& lhs, const T& rhs)
{
    // body 
}

然后

const char* p1 = "abc";
const char* p2 = "efg";
compare(p1, p2);

为什么编译器将T推导为常量char*(因此lhs和rhs的类型是常量char*const&)而不是char*(因此lhs和rhs的类型是常量char*&)?


共1个答案

匿名用户

当您有常量时(&; LHS常量适用于T类型。 由于T是指向常量字符的非常量指针,因此,将const char*应用到该对象时,将得到const char*const,或者是指向常量字符的常量指针。