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.
This is not allowed by C++ standard. Any compiler which compiles this code is non-conformant.
See 10.4.1/1: