--- /usr/include/boost/graph/reverse_graph.hpp 2012-01-08 17:56:54.760524029 +0100 +++ reverse_graph_alt.hpp 2012-01-11 15:27:21.171296543 +0100 @@ -25,20 +25,11 @@ struct reverse_graph_tag { }; namespace detail { template - class reverse_graph_edge_descriptor { - public: - EdgeDesc underlying_desc; - + class reverse_graph_edge_descriptor: public EdgeDesc { public: + typedef EdgeDesc base_t; explicit reverse_graph_edge_descriptor(const EdgeDesc& underlying_desc = EdgeDesc()) - : underlying_desc(underlying_desc) {} - - friend bool operator==(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) { - return a.underlying_desc == b.underlying_desc; - } - friend bool operator!=(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) { - return a.underlying_desc != b.underlying_desc; - } + : base_t(underlying_desc) {} }; template @@ -280,14 +271,14 @@ template ::vertex_descriptor source(const detail::reverse_graph_edge_descriptor& e, const reverse_graph& g) { - return target(e.underlying_desc, g.m_g); + return target(Edge(e), g.m_g); } template inline typename graph_traits::vertex_descriptor target(const detail::reverse_graph_edge_descriptor& e, const reverse_graph& g) { - return source(e.underlying_desc, g.m_g); + return source(Edge(e), g.m_g); }