Является ли размещение динамического массива без указания размера корректным кодом?

Следующий фрагмент простой программы выдает ошибки компиляции с 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.
Я ожидаю ответа на наблюдаемое поведение независимо от того, полезно оно или нет, я полностью осознаю, что оно бесполезно и не рекомендуется.

10
задан Alok Save 20 March 2012 в 05:31
поделиться