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