Следующий фрагмент простой программы выдает ошибки компиляции с gcc-4.3.4
.
Программа:
int main()
{
char *ptr = new char[10];
char *ptr1 = new char[];
return 0;
}
Ошибки компиляции:
prog.cpp: В функции ‘int main()’:
prog.cpp:4: ошибка: ожидаемое первичное выражение перед токеном «]»
prog.cpp:3: предупреждение: неиспользуемая переменная ‘ptr’
prog.cpp:4: предупреждение: неиспользуемая переменная ‘ptr1’
Но то же самое чисто компилируется с MSVC без какого-либо диагностического сообщения.
Итак, мой вопрос:
Разрешает ли стандарт вызывать новый []
без указания размера
? Или это ошибка в MSVC?
Может ли кто-нибудь предоставить ссылку из стандарта, которая убедительно скажет, что приведенный выше пример кода неправильно или правильно сформирован?
Я просмотрел:
5.3.4 Новые [expr.new]и
18.4.1.2 Формы массивов [lib.new.delete.array]
, но не нашел ни одной неопровержимые доказательства поведения.
РЕДАКТИРОВАТЬ:
Добавлен тег Language Lawyer
.
Я ожидаю ответа на наблюдаемое поведение независимо от того, полезно оно или нет, я полностью осознаю, что оно бесполезно и не рекомендуется.