
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Jeremy, I think I discovered a problem concerning filtered_graphs and parallel edges: Assume I have a graph containing two edges E1 and E2 connecting node A and node B. Now I crate a boost::filtered_graph (myFilteredGraph) with a filter that returns true for only E1. When I now try to get E1 by calling edge = boost::edge( A, B, myFilteredGraph ).first; the result is undefined. Looking at the code (filtered_graph.hpp) I found out that the edge is return by: edge(typename filtered_graph<G, EP, VP>::vertex_descriptor u, typename filtered_graph<G, EP, VP>::vertex_descriptor v, const filtered_graph<G, EP, VP>& g) { typename G::edge_descriptor e; bool exists; tie(e, exists) = edge(u, v, g.m_g); return std::make_pair(e, exists && g.m_edge_pred(e)); } Here, the line tie(e, exists) = edge(u, v, g.m_g); returns _some_ edge, but not necessarily the _right_ one. The call edge(...) is not called for the filtered graph and g.m_edge_pred(e) is called _after_ getting the wrong edge (resulting in a return value FALSE). One solution would be to call boost::edge_range(A, B, myFilteredGraph) on my filtered_graph to get all visible edges, but this function is not provided. Any ideas how to solve my problem? Michael - -- http://www.ive.uni-hannover.de # kettner@ive.uni-hannover.de -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE9TqUAkCdGnb0kVFMRAlsLAJwKJJ2NSLRu2HUv/H4sAhr4W5WdkACdHXZ6 3kz8fBDvysWKc1vxd5rf/CE= =l+NV -----END PGP SIGNATURE-----