根据c ++标准,以下程序是否格式正确或格式不正确?
struct A { protected: static const int x = 0; };
struct B : A {};
struct C : A { using A::x; };
struct D : B, C {};
int main() { D::x; }
不同的编译器会给出不同的结果。 Clang拒绝它并且GCC接受它:
我认为程序格式正确(因此clang有拒绝它的错误)http://eel.is/c++draft/class.paths#1,但我不确定:
如果多个路径可以通过多个路径到达名称 继承图,访问权限是给出最多的路径 访问。