libstdc++

Functions  
template<typename _Ret , typename _Tp >  
mem_fun_t< _Ret, _Tp >  std::mem_fun (_Ret(_Tp::*__f)()) 
template<typename _Ret , typename _Tp , typename _Arg >  
mem_fun1_t< _Ret, _Tp, _Arg >  std::mem_fun (_Ret(_Tp::*__f)(_Arg)) 
template<typename _Ret , typename _Tp >  
mem_fun_ref_t< _Ret, _Tp >  std::mem_fun_ref (_Ret(_Tp::*__f)()) 
template<typename _Ret , typename _Tp , typename _Arg >  
mem_fun1_ref_t< _Ret, _Tp, _Arg >  std::mem_fun_ref (_Ret(_Tp::*__f)(_Arg)) 
There are a total of 8 = 2^3 function objects in this family. (1) Member functions taking no arguments vs member functions taking one argument. (2) Call through pointer vs call through reference. (3) Const vs nonconst member function.
All of this complexity is in the function objects themselves. You can ignore it by using the helper function mem_fun and mem_fun_ref, which create whichever type of adaptor is appropriate.