Is moo supposed to be the function to call then? You can use functors and function pointers.
Code:template<typename Class_t, typename Fnc_t> void foo(Class_t& obj, Fnc_t FncPtr) { (obj.*FncPtr)(); } // Or alternatively template<typename Fnc_t> void foo(Fnc_t FncPtr) { FncPtr(); }