Listing 1: The extended aux::for_each interface

01  namespace aux {
02  
03  template <class Iterator, class Function>
04  inline
05  Function 
06  for_each(Iterator first, Iterator last, Function func)
07  {
08     return std::for_each(first, last, func);
09  }
10  
11  template <class Iterator, class Return, class Class>
12  inline
13  mem_fun_t<Return, Class>
14  for_each(
15     Iterator first, 
16     Iterator last, 
17     Return (Class::*func)())
18  {
19     return std::for_each(first, last, 
20                          mem_fun_t<Return, Class>(func));
21  }
22  
23  template <class Iterator, class Return, class Class>
24  inline
25  const_mem_fun_t<Return, Class>
26  for_each(
27     Iterator first, 
28     Iterator last, 
29     Return (Class::*func)() const)
30  {
31     return std::for_each(first, last, 
32                          const_mem_fun_t<Return, Class>(func));
33  }
34  } // End of aux namespace.