Как можно передать массив в функцию не обьявляя его?
template <size_t N>
void foo(int(&arr)[N]) {
for (int var : arr)
printf("%d\n", var);
}
int main(){
foo( { 1, 4, 5, 6 } ); // <- Ошибка
return 0;
}
Проблема вашего кода не имеет никакого отношения к массивам.
Если вы хотите передавать что-то по lvalue-ссылке, то помните, что ко временным объектам разрешается привязывать только константные lvalue-ссылки (т.е., выражаясь корректнее, ссылки на константу). Нужно только иметь в виду, что в случае массива константность всего массива "проваливается вниз" и становится константностью индивидуальных элементов массива
template <size_t N>
void foo(const int (&arr)[N]) {
...
Это все, что надо исправить в вашем коде.
http://coliru.stacked-crooked.com/a/e98e75636ab73993
void foo(std::initializer_list<int> c) {
for (int var : c)
printf("%d\n", var);
}
int main(){
foo( { 1, 4, 5, 6 } ); // <- Ошибка
return 0;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости