https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70555

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Actually, I did find where N3366
(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html) disallows
the test case in vla7.C:

Change in 8.3.4 dcl.array paragraph 1 ...:

    In a declaration T D where D has the form

               D1 [ expression opt ] attribute-specifier-seq opt

    and the type of the identifier in the declaration T D1 is
"derived-declarator-type-list T", then the type of the identifier of D is an
array type; [...] T is called the array element type; this type shall not be a
[...] an array of unknown or runtime bound...

According to this specification (which was never ratified and ended up being
removed from the final C++ standard), the test case in comment #0 would also be
ill-formed.  Yet, GCC accepts such VLAs in most (all?) other contexts, so I'm
not sure that rejecting them here is helpful (though it certainly is
inconsistent).

I'm going to leave this as ice-on-valid code since as long as such arrays are
accepted in other contexts I think it makes sense to accept it here (and also
in vla7.C).

Reply via email to