Я читаю в своей книге о конверсии и параметрах типа шаблона, а следующий в основном путаю черт из меня (я писали свои вопросы в пунктах, которые я цитировал):Конверсия и Тип шаблон Параметры
"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 тот факт, что типы массивов отличаются, не имеет значения. Оба массива преобразуются в указатели. e тип параметра в fobj - int *. Однако вызов fref является незаконным. Когда параметр является ссылкой, массивы не преобразуются в указатели. Типы a и b не совпадают, поэтому вызов ошибочен. [Вопрос 2: снова, как типы a и b не совпадают, и почему именно этот вызов является незаконным? Я не понимая] "