es</tt> class which can be used inside the body of a
class definition (whereas <tt>function_requires()</tt> can only be
used inside of a function body).  <tt>class_requires</tt> declares a
nested class template, where the template parameter is a function
pointer. We then use the nested class type in a typedef with the
function pointer type of the constraint function as the template
argument.

<pre>
  template &lt;class Concept&gt;
  class class_requires
  {
    typedef void (Concept::* function_pointer)();
