RE>
  template &lt;class G&gt;
  struct IncidenceGraphConcept
  {
    typedef typename boost::graph_traits&lt;G&gt;::out_edge_iterator out_edge_iterator;
    void constraints() {
      function_requires&lt; GraphConcept&lt;G&gt; &gt;();
      function_requires&lt; MultiPassInputIteratorConcept&lt;out_edge_iterator&gt; &gt;();

      p = out_edges(v, g);
      e = *p.first;
      u = source(e, g);
      v = target(e, g);
    }
    void const_constraints(const G&amp; g) {
      p = out_edges(v, g);
      e = 