#include <iostream>
struct T
{
T(int x) : x(x) {};
void foo() { std::cout << x; }
private:
int x;
};
int main()
{
typedef void (T::*P)();
P fooptr = &T::foo;
T obj(5);
(obj.*fooptr)(); // Output: 5
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFQKewogICBUKGludCB4KSA6IHgoeCkge307CiAgIHZvaWQgZm9vKCkgeyBzdGQ6OmNvdXQgPDwgeDsgfQoKcHJpdmF0ZToKICAgaW50IHg7Cn07CgppbnQgbWFpbigpCnsKICAgIHR5cGVkZWYgdm9pZCAoVDo6KlApKCk7CiAgICBQIGZvb3B0ciA9ICZUOjpmb287CiAgICAKICAgIFQgb2JqKDUpOwogICAgKG9iai4qZm9vcHRyKSgpOyAvLyBPdXRwdXQ6IDUKfQ==