clang和g ++都没有编译下面的代码片段.为什么?

Joã*_*nso 13 c++ language-lawyer member-access c++17

既没有clang也没有g++编译这个片段:

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

struct D: A::B, A{};
Run Code Online (Sandbox Code Playgroud)

根据[class.access]/7,我们有:

类似地,使用A :: B作为基本说明符是格式良好的,因为D是从A派生的,因此必须推迟检查基本说明符,直到看到整个base-specifier-list.

上面的例子和句子是[class.access]/7的一部分,至少从C++ 11开始.