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