struct S {
void f() {}
};
template<typename T>
void call(T* t, void (T::*fn)())
{
(t->*fn)();
delete t;
}
int main() {
call(new S, &S::f);
}
c3RydWN0IFMgewoJdm9pZCBmKCkge30KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgY2FsbChUKiB0LCB2b2lkIChUOjoqZm4pKCkpCnsKCSh0LT4qZm4pKCk7CglkZWxldGUgdDsKfQoKaW50IG1haW4oKSB7CgljYWxsKG5ldyBTLCAmUzo6Zik7Cn0=