C11 поддерживает анонимные структуры, например, так:
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
В принципе, члены такой struct
рассматриваются как члены объемлющей struct
или union
(рекурсивно, если объемлющая структура сама анонимна).
Какова была причина, по которой C++11 не включил анонимные структуры? Они полезны лишь в редких случаях (в основном внутри объединений, чтобы исключить необходимость вводить идентификатор для struct
), конечно. Но они кажутся достаточно очевидным дополнением к спецификации (и уже реализованы многими компиляторами), так что, несомненно, они должны были обсуждаться, по крайней мере, для сохранения совместимости со стандартом C11. Так почему же они не были добавлены?