Fields with the same name across different anonymous unions inside one union

739 views Asked by At

Is it legal to have fields with the same name across different anonymous unions inside one union?

union Foo
{
    union
    {
        int bar;
    };

    union
    {
        int bar;
    };
};

This code fails to compile by GCC but works fine in MSVC.

1

There are 1 answers

0
SergeyA On BEST ANSWER

This is not allowed by C++ standard. Any compiler which compiles this code is non-conformant.

See 10.4.1/1:

The names of the members of an anonymous union shall be distinct from the names of any other entity in the scope in which the anonymous union is declared.