 type, we would have a reference to a reference, which is
  currently illegal (but see <a href=
  "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#106">C++ core
  language issue number 106)</a></p>

  <p>So the way in which we want to declare the argument for
  <tt>operator()</tt> depends on whether or not the wrapped function's
  argument is a reference. If it is a reference, we want to declare it simply
  as <tt>Arg</tt>; if it is a value we want to declare it as
  <tt>const&nbsp;Arg&amp;</tt>.