Listing 7

#include <functional>
#include <iostream>
using std::cout;
using std::tr1::mem_fn;

struct S
  { // struct with two member functions
  void show() const
    { cout << "S::show\n"; }
  void show_int(int i) const
    { cout << "S::show_int(" << i << ")\n"; }
  };
int main()
  { // demonstrate use of mem_fn
  S s;
  S *sp = &s;
  s.show();                     // call member function on an object
  sp->show_int(3);              // call member function on an object
  mem_fn(&S::show)(s);          // call through wrapper on an object
  mem_fn(&S::show_int)(sp, 3);  // call through wrapper on an object
  return 0;
  }