Bel*_*loc 10 c++ protected derived-class language-lawyer c++14
从[class.access]/7我们得到以下句子:
类似地,
A::B作为基本说明符的使用是良好形成的,因为它D是派生自的A,因此必须推迟对基本说明符 s的检查,直到看到整个基本说明符列表.
class A {
protected:
struct B { };
};
struct D: A::B, A { };
Run Code Online (Sandbox Code Playgroud)
查看clang的实例.事实上,clang还抱怨这个片段,不需要延期.
class A {
protected:
struct B { };
};
struct D: A, A::B { };
Run Code Online (Sandbox Code Playgroud)
为什么这段代码不能编译?
PS:gcc和VS21013也不编译代码.