在一个联合内的不同匿名联合中具有相同名称的字段

Fro*_*art 4 c++ unions language-lawyer type-definition

在一个联合中的不同匿名联合中使用具有相同名称的字段是否合法?

union Foo
{
    union
    {
        int bar;
    };

    union
    {
        int bar;
    };
};
Run Code Online (Sandbox Code Playgroud)

此代码无法由GCC编译,但在MSVC中正常工作.

Ser*_*eyA 8

C++标准不允许这样做.编译此代码的任何编译器都不符合要求.

见10.4.1/1:

匿名工会成员的名称应与宣布匿名工会的范围内的任何其他实体的名称不同.