How to allow templated functor work on both member and non-member functions
问题 I got this logging templated functor template<typename RetType, typename Arg1Type, typename Class> class Logger { public: RetType operator()(Arg1Type s, ...) { if(func != 0 && parser != 0) return (parser->*func)(s); else if(nfunc != 0) return nfunc(s); return RetType(); } Logger& operator=(RetType(*fun)(Arg1Type s, ...)) { func = fun; return *this; } void Bind(Class* pars, RetType(Class::*fun)(Arg1Type s,...)) { parser = pars; func = fun; nfunc = 0; } void Bind(RetType(*fun)(Arg1Type s,...))