Поля с одинаковыми именами в разных анонимных объединениях внутри одного объединения

Законно ли иметь поля с одинаковыми именами в разных анонимных объединениях в одном объединении?

union Foo
{
union
{
int bar;
};

union
{
int bar;
};
};

Этот код не компилируется GCC, но прекрасно работает в MSVC.

4

Решение

Это не разрешено стандартом C ++. Любой компилятор, который компилирует этот код, не соответствует.

См. 10.4.1 / 1:

Имена членов анонимного союза должны отличаться от
имена любого другого объекта в области, в которой анонимный
Союз объявляется.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]