1class A; 2typedef int (A::*f_ptr) (void); 3 4class B { 5public: 6 B() {}; ~B() {}; 7 B& dummy(f_ptr cb) { return *this; }; 8}; 9 10template<class SP, class CB> SP& call_dummy(SP* sp, CB cb) { 11 sp->dummy(cb); 12 return *sp; 13}; 14 15class A { 16public: 17 A() {}; ~A() {}; 18 int ok() { return 0; }; 19 A& call_it(B* s) { 20 call_dummy(s, &A::ok); 21 return *this; 22 }; 23}; 24 25int main() { 26 A a; B b; 27 a.call_it(&b); 28 return 0; 29} 30