[quote name='Washu' timestamp='1351017811' post='4993161']
anonymous structures within an anonymous union are not legal C++. Its a visual studio extension.
Crap, I've been looking the standard up and down and I didn't find anything that would make this illegal. Though I could've looked harder. Maybe there's a difference between C11 and C++11 in this regard? But I do know that it's not just a visual studio extension; it works well on gcc and clang as well.
[/quote]
GCC does it just because Visual Studio does it, and people would complain if GCC was too incompatible with Microsoft's compiler.
If you have compiler warnings set to their proper level, GCC would tell you that it's non-standard, iirc (I ran into this a few months back). Though, the documentation for GCC does imply that C11 permits it.