3

次のプログラムは、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 はそれを受け入れます。

http://eel.is/c++draft/class.paths#1によると、プログラムは整形式です(したがって、そのclangにはそれを拒否するバグがあります)と思いますが、よくわかりません:

複数の継承グラフを介して複数のパスで名前に到達できる場合、アクセスは、最も多くのアクセスを提供するパスのアクセスになります。

4

0 に答える 0