Нет, подожди, потерпи меня...
VLA всегда были расширением GCC, но они были приняты C99:
[C99: 6.7.5.2/4]:
Если размер отсутствует, тип массива является неполным. Если размер * вместо выражения, тип массива является типом массива переменной длины неопределенного размера, который может использоваться только в объявлениях с областью действия прототипа функции; такие массивы, тем не менее, являются полными типами. Если размер представляет собой целочисленное константное выражение, а тип элемента имеет известный постоянный размер, тип массива не является типом массива переменной длины; в противном случае тип массива является типом массива переменной длины.
C99 также известен как ISO/IEC 9899:1999
.
Сейчас:
[C++11: 1.1/2]:
C++ — это язык программирования общего назначения, основанный на языке программирования C, как указано в ISO/IEC 9899:1999 (далее — стандарт C). В дополнение к возможностям, предоставляемым C, C++ предоставляет дополнительные типы данных, классы, шаблоны, исключения, пространства имен, перегрузку операторов, перегрузку имен функций, ссылки, свободные операторы управления хранилищем и дополнительные библиотечные возможности.
Разве в C++11 тоже не должны быть VLA?