https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92641
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- The C front end explicitly tracks VLA size expressions in type names in casts and ensures they are evaluated at an appropriate point using a C_MAYBE_CONST_EXPR (which later turns into a COMPOUND_EXPR); see c_cast_expr. Presumably C++ needs to do something similar to ensure size expressions in type names are evaluated at an appropriate point within the containing expression.