我正在阅读有关转换和模板类型参数的书,以下内容基本上让我感到困惑(我在引用的段落中写下了我的问题):
"template <typename T> T fobj(T, T);
template <typename T> T fref(const T&, const T&);
int a[10], b[42];
fobj(a,b); //calls f(int*, int*)
fref(a,b); //error: array types don't match
“在 [this] 对调用中,我们传递数组参数,其中数组的大小不同,因此具有不同的类型。[我的问题:什么时候不同大小的数组被认为是不同的类型?这两个数组都不是类型” int" 数组?这是什么意思? ] 在对 fobj 的调用中,数组类型不同的事实并不重要。两个数组都转换为指针。fobj 中的模板参数类型是 int*。调用但是fref是非法的,当参数是引用时,数组没有转化为指针,a和b的类型不匹配,所以调用出错。【问题2:再次,类型怎么做a 和 b 不匹配,为什么这个调用是非法的?我不明白] "