https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119666
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- The language semantics require us to do that for C++ constant expressions. You can use that integer (or a constexpr function returning an integer) like this: int a[x]; std::array<char, x> a2; You cannot delay evaluation of those constant expressions until runtime.