https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114534
Bug ID: 114534 Summary: Feature request: extend VLA support in C++ Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: nightstrike at gmail dot com Target Milestone: --- See https://gcc.gnu.org/pipermail/gcc-help/2024-March/143369.html for reference. The documentation at https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html states that VLAs are supported in C++ as an extension. Compiling the following: void f(int a, int b[a]); void f() { int c[2]; f(2, c); } with g++ -std=gnu++20 results in the error: "use of parameter outside function body before ']' token". The docs say nothing about partial support of VLA, just that they can be used. Where this is useful as an extension is in the somewhat reasonable case of including a C header in a C++ program. If that C header declares a function using a C99 VLA, it would be awesome if g++ were to accept it in -std=gnu++ mode (and it would be fine if it were rejected in -std=c++ mode). Consider a situation where you cannot modify the header, and so have to use it as-is. For comparison, clang added support for this feature in version 12. It would be advantageous to have feature parity given that it started as a GNU extension. Moreover, better interoperability with C is useful in its own right.