[class.paths] (original) (raw)

11 Classes [class]

11.8 Member access control [class.access]

11.8.7 Multiple access [class.paths]

If a declaration can be reached by several paths through a multiple inheritance graph, the access is that of the path that gives most access.

[Example 1: class W { public: void f(); };class A : private virtual W { };class B : public virtual W { };class C : public A, public B { void f() { W::f(); } };

SinceW​::​f()is available toC​::​f()along the public path throughB, access is allowed.

— _end example_]