Почему C++11 не поддерживает анонимные структуры, а C11 поддерживает?

C11 поддерживает анонимные структуры, например, так:

struct Foo
{
    struct
    {
        size_t x, y;
    };
};
struct Foo f;
f.x = 17;
f.y = 42;

В принципе, члены такой struct рассматриваются как члены объемлющей struct или union (рекурсивно, если объемлющая структура сама анонимна).

Какова была причина, по которой C++11 не включил анонимные структуры? Они полезны лишь в редких случаях (в основном внутри объединений, чтобы исключить необходимость вводить идентификатор для struct), конечно. Но они кажутся достаточно очевидным дополнением к спецификации (и уже реализованы многими компиляторами), так что, несомненно, они должны были обсуждаться, по крайней мере, для сохранения совместимости со стандартом C11. Так почему же они не были добавлены?

43
задан Xeo 29 May 2012 в 14:52
поделиться