Я относительно новичок в C ++, и с самого начала мне дошло, что вы не можете делать что-то вроде
int x;
cin >> x;
int array[x];
Вместо этого вы должны использовать динамическую память. Однако недавно я обнаружил, что вышеприведенный будет скомпилирован (хотя я получаю предупреждение с предупреждением о том, что это запрещено ISO C ++). Я знаю, что, очевидно, это плохая идея, если это не разрешено стандартом, но раньше я даже не знал, что это возможно.
Мой вопрос: почему g ++ допускает массивы переменной длины, которые не выделяются динамически, если это не разрешено стандартом? Кроме того, если это возможно для компилятора, почему не это в стандарте?