/jtc1/sc22/wg21/docs/cwg_active.html#106">C++
  standard core language active issues list</a>).</p>

  <p>However, if we instead defined <tt>operator()</tt> to accept Predicate's
  argument_type unmodified, this would be needlessly inefficient if it were a
  value type; the argument would be copied twice - once when calling
  <tt>unary_negate</tt>'s <tt>operator()</tt>, and again when
  <tt>operator()</tt> called the adapted function.</p>

  <p>So how we want to declare the argument for <tt>operator()</tt> 