Размеры массива должны быть известны во время компиляции.
Переменная const
не гарантирует этого. Спецификатор const
гарантирует, что переменная не может быть изменена после ее инициализации.
Возможно, значение переменной const
будет известно во время компиляции. Если компилятор может обнаружить это, то переменная может использоваться для определения размера массива.
Чаще всего значение переменной const
неизвестно во время компиляции. Он инициализируется значением во время выполнения, которое нельзя изменить после инициализации переменной. Это не позволяет использовать его для определения размера массива.
Если вы хотите использовать переменную во время компиляции, используйте вместо нее constexpr
. Компилятор сделает все возможное, чтобы оценить значение во время компиляции. Он потерпит неудачу, если значение переменной не может быть оценено во время компиляции.