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