Допускается ли создание массивов с допустимыми пределами выполнения в c ++?
Такие массивы некорректны.
Но ниже приведен код, скомпилированный без ошибок.... и тоже отлично работает.
Стандарт C ++ не запрещает компиляторам успешно компилировать некорректно созданные программы.Достаточно показать диагностическое сообщение.Это позволяет компиляторам расширять язык.
Если вы посмотрите на выходные данные компилятора вашего примера, вы обнаружите, что компилятор сказал вам об этом, как того требует стандарт C ++:
15:15: warning: array of array of runtime bound [-Wvla]
Итак, похоже, что ваш компилятор поддерживает массивы привязки времени выполнения - и даже массивы массивов привязки времени выполнения - как расширение языка.
Большинство компиляторов могут бытьпредлагается отказаться от программ, которые плохо сформированы в соответствии со стандартом C ++, если вы того пожелаете.
Стандартно совместимо создание массивов с ограничением времени выполнения в динамическом хранилище .Самый простой способ - использовать std::vector
.