Index: breadth_first_search.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/graph/breadth_first_search.hpp,v retrieving revision 1.50 diff -u -r1.50 breadth_first_search.hpp --- breadth_first_search.hpp 23 Jun 2003 04:38:16 -0000 1.50 +++ breadth_first_search.hpp 25 Sep 2004 13:26:48 -0000 @@ -37,6 +37,7 @@ #include #include #include +#include namespace boost { @@ -66,18 +67,22 @@ void breadth_first_visit (const IncidenceGraph& g, typename graph_traits::vertex_descriptor s, - Buffer& Q, BFSVisitor vis, ColorMap color) + Buffer& Q, BFSVisitor xvis, ColorMap color) { + typedef typename unwrap_reference::type realBFSVisitor; + function_requires< IncidenceGraphConcept >(); typedef graph_traits GTraits; typedef typename GTraits::vertex_descriptor Vertex; typedef typename GTraits::edge_descriptor Edge; - function_requires< BFSVisitorConcept >(); + function_requires< BFSVisitorConcept >(); function_requires< ReadWritePropertyMapConcept >(); typedef typename property_traits::value_type ColorValue; typedef color_traits Color; typename GTraits::out_edge_iterator ei, ei_end; + realBFSVisitor& vis = static_cast(xvis); + put(color, s, Color::gray()); vis.discover_vertex(s, g); Q.push(s); while (! Q.empty()) { @@ -103,8 +108,11 @@ void breadth_first_search (const VertexListGraph& g, typename graph_traits::vertex_descriptor s, - Buffer& Q, BFSVisitor vis, ColorMap color) + Buffer& Q, BFSVisitor xvis, ColorMap color) { + typedef typename unwrap_reference::type realBFSVisitor; + realBFSVisitor& vis = static_cast(xvis); + // Initialization typedef typename property_traits::value_type ColorValue; typedef color_traits Color;