Во многих языках семейства C можно инициализировать массив с количеством элементов, неявных в списке исходных элементов.Например, в Java:
int[] ints = new int[] {0, 1, 2, ...}
На странице 597 «Программирование: принципы и практика с использованием C ++» Страуструп пишет, что в C ++ можно использовать подобный синтаксис:
double* p5 = new double[] {0, 1, 2, 3, 4};
Тем не менее, при попытке скомпилировать это с помощью GCC или Clang, я получаю ошибки, потому что в скобках ожидается выражение:
$ g++ main.cpp
main.cpp: In function 'int main()':
main.cpp:17:26: error: expected primary-expression before ']' token
double* p5 = new double[]{0, 1, 2, 3, 4};
^
main.cpp:17:41: error: too many initializers for 'double [1]'
double* p5 = new double[]{0, 1, 2, 3, 4};
^
И с Clang:
$ clang++ main.cpp
main.cpp:17:26: error: expected expression
double* p5 = new double[]{0, 1, 2, 3, 4};
^
main.cpp:17:19: error: excess elements in scalar initializer
double* p5 = new double[]{0, 1, 2, 3, 4};
^ ~~~~~~~~~~~~~
2 errors generated.
Книга невернана этом?Я видел, по крайней мере, одного SO-пользователя, который рекомендовал это кому-то, у кого не было проблем (этот код для меня тоже не компилировался).