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开始.