Я изучаю концепции шаблонов C++. Я не понимаю следующее.Как передать массив в шаблон функции со ссылкой
#include <iostream>
#include <typeinfo>
using namespace std;
template <typename T>
T fun(T& x)
{
cout <<" X is "<<x;
cout <<"Type id is "<<typeid(x).name()<<endl;
}
int main (int argc, char ** argv)
{
int a[100];
fun (a);
}
Что я пытаюсь?
1) T весело (T & х)
Здесь х является ссылкой, и, следовательно, не распадались «а» в тип указателя, но во время компиляции, я получаю следующее сообщение об ошибке.
error: no matching function for call to ‘fun(int [100])’
Когда я пытаюсь использовать ссылку, она отлично работает. Насколько я понимаю, массив распадается на тип указателя.
Пункт 1 в «эффективном современном C++» также предлагает этот способ. Написание '(& param) [N]' избыточно, если вам не нужно ссылаться на 'N' в теле' f' (хотя это также можно вывести после того, как у вас есть тип) –