Listing 3: External member function object.
template <typename ReturnType, typename ClassType, typename ArgType> class extern_mem_fun_t : public unary_function<ArgType, ReturnType> { public : extern_mem_fun_t( ReturnType (ClassType::*p)(ArgType), ClassType* ob) : mf(p), pobj(ob) {} ReturnType operator() (ArgType item) { return((pobj->*mf)(item)); } private: ReturnType (ClassType::*mf)(ArgType); ClassType* pobj; };