私は変換とテンプレート型パラメーターに関する本を読んでいますが、以下は基本的に私を混乱させています (引用した段落内に質問を書きました)。
"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
「[この]呼び出しのペアでは、配列が異なるサイズであり、したがって異なる型を持つ配列引数を渡します。[私の質問: 異なるサイズの配列が異なる型と見なされるのはいつからですか?これらの配列は両方とも型ではありません」 int" 配列? これはどういう意味ですか? ] fobj の呼び出しでは、配列の型が異なることは問題ではありません。どちらの配列もポインターに変換されます。ただし、 frefは不正です. パラメータが参照の場合、配列はポインタに変換されません. a と b の型が一致しないため、呼び出しはエラーになります. a と b が一致しないのに、なぜこの呼び出しが違法なのですか?私には理解できません] "