#include <iostream>
struct Base
{
void test( void (Base::*fncPtr)() )
{
(this->*fncPtr)();
}
};
struct Derived : public Base
{
void method()
{
std::cout << "it works";
}
};
int main()
{
Derived d;
d.test(static_cast<void (Base::*)()>(&Derived::method));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEJhc2UKewoJdm9pZCB0ZXN0KCB2b2lkIChCYXNlOjoqZm5jUHRyKSgpICkKCXsKCQkodGhpcy0+KmZuY1B0cikoKTsKCX0KfTsKCnN0cnVjdCBEZXJpdmVkIDogcHVibGljIEJhc2UKewoJdm9pZCBtZXRob2QoKQoJewoJCXN0ZDo6Y291dCA8PCAiaXQgd29ya3MiOwoJfQp9OwoKaW50IG1haW4oKQp7CglEZXJpdmVkIGQ7CglkLnRlc3Qoc3RhdGljX2Nhc3Q8dm9pZCAoQmFzZTo6KikoKT4oJkRlcml2ZWQ6Om1ldGhvZCkpOwp9