Законно ли иметь поля с одинаковыми именами в разных анонимных объединениях в одном объединении?
union Foo
{
union
{
int bar;
};
union
{
int bar;
};
};
Этот код не компилируется GCC, но прекрасно работает в MSVC.
Это не разрешено стандартом C ++. Любой компилятор, который компилирует этот код, не соответствует.
См. 10.4.1 / 1:
Имена членов анонимного союза должны отличаться от
имена любого другого объекта в области, в которой анонимный
Союз объявляется.
Других решений пока нет …