diff --git a/include/boost/graph/detail/adjacency_list.hpp b/include/boost/graph/detail/adjacency_list.hpp index ef4947f7..d6be4c7d 100644 --- a/include/boost/graph/detail/adjacency_list.hpp +++ b/include/boost/graph/detail/adjacency_list.hpp @@ -396,7 +396,9 @@ namespace boost { template struct directed_graph_helper - : public directed_edges_helper { }; + : public directed_edges_helper { + typedef vertex_and_edge_list_graph_tag traversal_category; + }; // O(E/V) template @@ -512,6 +514,10 @@ namespace boost { template struct undirected_graph_helper; + struct undir_adj_list_traversal_tag : + public virtual vertex_and_edge_list_graph_tag, + public virtual bidirectional_graph_tag { }; + namespace detail { // O(E/V) template @@ -616,6 +622,8 @@ namespace boost { template struct undirected_graph_helper { + typedef undir_adj_list_traversal_tag traversal_category; + // Placement of these overloaded remove_edge() functions // inside the class avoids a VC++ bug. @@ -821,9 +829,15 @@ namespace boost { //========================================================================= // Bidirectional Graph Helper Class + struct bidir_adj_list_traversal_tag : + public virtual vertex_and_edge_list_graph_tag, + public virtual bidirectional_graph_tag { }; + template struct bidirectional_graph_helper - : public directed_edges_helper { }; + : public directed_edges_helper { + typedef bidir_adj_list_traversal_tag traversal_category; + }; template inline void