#include "iostream"
struct X
{
virtual void f() { std::cout << "X::f()\n"; };
};
struct Y: public X
{
void f() override { std::cout << "Y::f()\n"; };
};
int main()
{
typedef void (X::*pointer)();
pointer somePointer = &X::f;
X *x = new Y;
(x ->* somePointer)();
};
I2luY2x1ZGUgImlvc3RyZWFtIgpzdHJ1Y3QgWAp7CiAgdmlydHVhbCB2b2lkIGYoKSB7IHN0ZDo6Y291dCA8PCAiWDo6ZigpXG4iOyB9Owp9OwpzdHJ1Y3QgWTogcHVibGljIFgKewogIHZvaWQgZigpIG92ZXJyaWRlIHsgc3RkOjpjb3V0IDw8ICJZOjpmKClcbiI7ICB9Owp9OwoKaW50IG1haW4oKQp7Cgl0eXBlZGVmIHZvaWQgKFg6Oipwb2ludGVyKSgpOwoJcG9pbnRlciBzb21lUG9pbnRlciA9ICZYOjpmOwoJWCAqeCA9IG5ldyBZOwoJKHggLT4qIHNvbWVQb2ludGVyKSgpOwp9Ow==