Figure 1: Function void_mem_fun

template<class T>
class void_mem_fun_t : public std::unary_function<T*, void> {
public:
   explicit void_mem_fun_t(void (T::*pMemFun)())
      : m_pMemFun(pMemFun) {}
   void operator()(T* p) const
   { (p->*m_pMemFun)(); }
private:
   void (T::*m_pMemFun)();
};

template<class T> inline
void_mem_fun_t<T> void_mem_fun(void (T::*pMemFun)())
{ return void_mem_fun_t<T>(pMemFun); }