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();
}