具有多重继承和使用声明的程序的实现差异,具有与原始声明

时间:2015-08-08 23:33:42

标签: c++ language-lawyer multiple-inheritance name-lookup using-declaration

根据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,但我不确定:

  

如果多个路径可以通过多个路径到达名称   继承图,访问权限是给出最多的路径   访问。

0 个答案:

没有答案