Подтвердить что ты не робот

Ни clang, ни g++ не компилируют сниппет ниже. Зачем?

Ни clang, ни g++ не компилирует этот фрагмент:

struct A{
protected:    
    struct B{};
};

struct D: A::B, A{};

Согласно [class.access]/7, мы имеем:

Аналогично, использование A:: B в качестве базового спецификатора хорошо сформировано, потому что D выводится из A, поэтому проверка базовых спецификаторов должна быть отложена пока не появится весь список спецификаторов базы.

Пример и приведенное выше предложение являются частью [class.access]/7, по крайней мере, с С++ 11.

4b9b3361