Почему в C++ `auto` не работает для массива внутри функции?
Перехожу с С на С++. Не могу понять почему auto не работает для массива внутри функции. С вектором все в порядке, если попробовать в main - все в порядке, а вот именно внутри функции не работает. Из-за чего?
void foo(int a[10])
{
for (int x : a)
std::cout << x << " ";
}
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
C++ (и С кстати тоже) не разрешает передачу массива по значению. Вместо этого тип аргумента изменяется. В этом контексте a не является массивом, а имеет тип int *. Если хотите работать с массивом - передавайте по ссылке или по указателю:
void foo(int ( & a )[10])
{
for (int x : a)
std::cout << x << " ";
}
А еще лучше - использовать ::std::array или array_view.