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

--- Comment #2 from Jason Liam <jlame646 at gmail dot com> ---
(In reply to Andrew Pinski from comment #1)
> clang rejects it with the same error message.
> 
> Both GCC and clang are correct because the inner types are not complete
> until after the outer type is complete.

I don't think what you said about " inner types are not complete until after
the outer type is complete" is true.

In particular, the following program is well-formed. Note in the below program
the nested type named `A` is complete when its `};` is encountered and not when
the containing class `C`'s `};` is encountered as opposed to your claim.

```
struct C 
{
    struct A
    {

    };
    static constexpr A a{}; //this is fine because A is complete here as
opposed to Andrew's claim

};
```

Reply via email to