#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();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCmNsYXNzIEEgeyBwdWJsaWM6IHZpcnR1YWwgdm9pZCBmKCl7IHN0ZDo6Y291dCA8PCAiQTo6ZiIgPDwgJ1xuJzsgfSB9OwpjbGFzcyBCIDogdmlydHVhbCBwdWJsaWMgQSB7IH07CmNsYXNzIEMgOiB2aXJ0dWFsIHB1YmxpYyAgQSB7IHB1YmxpYzogdm9pZCBmKCl7IHN0ZDo6Y291dCA8PCAiQzo6ZiIgPDwgJ1xuJzsgfSB9OwpjbGFzcyBEIDogcHVibGljIEIsIHB1YmxpYyBDIHsgfTsKIAppbnQgbWFpbigpCnsKICAgIEQgZDsKICAgIEIqIHBiID0gJmQ7CiAgICBwYi0+ZigpOwp9