#include <iostream>
 
class A { public: virtual void f(){ std::cout << "A::f" << '\n'; } };
class B : virtual public A { };
class C : virtual public  A { public: void f(){ std::cout << "C::f" << '\n'; } };
class D : public B, public C { };
 
int main()
{
    D d;
    B* pb = &d;
    pb->f();
}