Закрытый модификатор C ++ игнорируется во вложенной анонимной структуре

Следующий пример кода прекрасно компилируется в Visual C ++:

class Test {
private:
    struct {
        struct {
            int privateData;
        };
    };
};

int main(int, char **)
{
    Test test;
    test.privateData = 0;
    return 0;
}

Но почему? Я'я ожидал ошибку компилятора, потому чтоprivateData член должен быть недоступен для функции main, так какдолжно бытьprivate как его контейнерконтейнер Я знаю, что безымянные структуры не являются частью официального C ++, но этот дизайн является оригинальным.

Кстати ямы также пытались изменитьprivate вprotected а такжеstruct вunionПохоже, что компилятор отказывается учитывать модификаторы доступа для анонимных структур и объединений, которые вложены в другую анонимную структуру или объединение.

Может кто-нибудь объяснить эту функцию?

Ответы на вопрос(1)

Ваш ответ на вопрос