
This is weird... I'm still using BGL from Boost 1_29_0 (which may be an issue?). Anyway, I've got a graph as so: typedef boost::property<vertex_forest_property_t, CProteinCircuitForestVertexProperty, boost::property<boost::vertex_index_t, long, boost::property<boost::vertex_color_t, boost::default_color_type> > > forest_vertex_property_maps_declaration_t; typedef boost::adjacency_list<boost::listS /*edges*/, boost::listS /*vertices*/, boost::bidirectionalS, forest_vertex_property_maps_declaration_t> forest_graph_t; I've done a lot with this class, including all kinds of edge traversal. Now suddenly I have a case where boost::out_edges seems to be returning an invalid iterator range. I'm absolutely certain the vertex descriptor is correct, boost::out_degree returns the expected number of out edges, however I fault inside my access loop because the iterator has gone out of range.... typedef boost::graph_traits<forest_graph_t>::vertex_descriptor forest_vertex_descriptor_t; typedef boost::graph_traits<forest_graph_t>::vertex_descriptor forest_vertex_descriptor_t; typedef boost::graph_traits<forest_graph_t>::edges_size_type forest_edges_size_t; typedef boost::graph_traits<forest_graph_t>::out_edge_iterator forest_edge_out_iterator_t; forest_edge_out_iterator_t edgeoutiterBegin, edgeoutiterEnd, edgeoutiterCurrent; boost::tie(edgeoutiterBegin, edgeoutiterEnd) = boost::out_edges(v/*forest_vertex_descriptor_t*/,g/*forest_graph_t); for (edgeoutiterCurrent = edgeoutiterBegin; edgeoutiterCurrent != edgeoutiterEnd ; ++edgeoutiterCurrent) { // works fine through the expected out edges - faults because the loop fails to terminate forest_vertex_descriptor_t vertexTarget = boost::target(*edgeoutiterCurrent, g); } // end for Any suggestions would be greatly appreciated. I'm really scratching my head because I've done this exact operation in several other places in the algorithm and it works just fine.... TIA - Chris