¿Son las "estructuras anónimas" estándar? Y, realmente, ¿qué son ellos?
MSDNcalcula que las estructuras anónimas no son estándar en C ++:
Una extensión de Microsoft C le permite declarar una variable de estructura dentro de otra estructura sin darle un nombre. Estas estructuras anidadas se llaman estructuras anónimas. C ++ no permite estructuras anónimas.
Puede acceder a los miembros de una estructura anónima como si fueran miembros en la estructura contenedora.
Me dicen que esta característica no es necesariamente la misma que la simple creación de una estructura sin nombre, pero no puedo ver una distinción en términos de redacción estándar.
C ++ 11 dice:
[C++11: 9/1]
: [..] A especificador de clase cuyocabeza de clase omite elnombre de cabeza de clase define una clase sin nombre.
y proporciona una construcción gramatical completa para una definición de tipo que no tiene un nombre.
C ++ 03 carece de esta redacción explícita, pero de manera similar indica que elidentifier
en una definición de tipo es opcional, y hace referencia a "clases sin nombre" en9.4.2/5
y3.5/4
.