ctions or of graph library details here, but we'll show
you the complete signature with maximal checking, just to give you
a feel for how it's done.  Each predicate metafunction is enclosed
in parentheses <em>and preceded by an asterix</em>, as follows:</p>
<pre class="literal-block">
// We first need to define a few metafunction that we use in the
// predicates below.

template &lt;class G&gt;
struct traversal_category
{
    typedef typename boost::graph_traits&lt;G&gt;::traversal_category type;
};

templa