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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Hmm from the commit message (r13-3620-ge3c898e12d0ace):
```
    * The standard feature disallows the declaration from declaring
      anything that's not an ordinary identifier (thus, the initializer
      cannot declare a tag or the members of a structure or union), while
      making it undefined behavior for it to declare more than one
      ordinary identifier.  (For the latter, while I keep the existing
      error from __auto_type in the case of more than one declarator, I
      don't restrict other ordinary identifiers from being declared in
      inner scopes such as GNU statement expressions.  I do however
      disallow defining the members of an enumeration inside the
      initializer (if the enum definition has no tag, that doesn't
      actually violate a constraint), to avoid an enum type becoming
      accessible beyond where it would have been without auto.
      (Preventing new types from escaping the initializer - thus, ensuring
      that anything written with auto corresponds to something that could
      have been written without auto, modulo multiple evaluation of VLA
      size expressions when not using auto - is a key motivation for some
      restrictions on what can be declared in the initializer.)

    The rule on shadowing and restrictions on other declarations in the
    initializer are actually general rules for what C2x calls
    underspecified declarations, a description that covers constexpr as
    well as auto (in particular, this disallows a constexpr initializer
    from referencing the variable being initialized).  Thus, some of the
    code added for those restrictions will also be of use in implementing
    C2x constexpr.

```

So this might be expected.

Reply via email to