13

既不clang也不g++编译这个片段

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

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

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

类似地,使用 A::B 作为基本说明符是格式正确的,因为 D 是从 A 派生的,因此必须推迟对基本说明符的检查,直到看到整个基本说明符列表。

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

4

0 回答 0