Это не совсем так (вы почти наверняка получите альтернативную ссылку), вам разрешен пустой инициализатор (()
), который инициализирует значение массива, но да, вы не можете инициализировать элементы массива индивидуально при использовании массива new. (См. ИСО / МЭК 14882: 2003 5.3.4 [expr.new] / 15)
* 1006 Е.Г. *
int* p = new int[5](); // array initialized to all zero
int* q = new int[5]; // array elements all have indeterminate value
Нет фундаментальной причины не разрешать более сложный инициализатор, просто в C ++ 03 не было грамматической конструкции для этого. В следующей версии C ++ вы сможете сделать что-то вроде этого.
int* p = new int[5] {0, 1, 2, 3, 4};