[Graph] edge_range() with hash_setS as OutEdgeList in adjacency_list

Hi, The following issue seems to have been discussed on this list a while ago, but nothing seems to have changed since and I was usable to find a proper answer so far. The edge_range() function uses std::equal_range() to extract a pair of iterators to the edges of interest. The problem lies in the fact that according to the SGI STL documentation, std::equal_range() requires the entries to be sorted (although I found no explicit mention of that in the standard). With hash_setS as OutEdgeList in adjacency_list, the entries are obviously not sorted, and std::equal_range() must not be used. While it's easy to write an edge_range_custom() function that would call the equal_range() method instead of the global function, nothing can be done to prevent the use of the original edge_range() by other library code like bidirectional_graph_helper_with_property::get_parallel_edge_sublist(). These overloaded methods are called from within remove_edge() which apparently causes trouble with hash_setS. I tried myself to overload the original edge_range(), for the case where hash_setS is used, but the solution is far from elegant and it feels like something be better done upstream. What do you think about that? Shouldn't the equal_range() method be used directly instead of std::equal_range() in any case? Thanks for your help. Ignacy -- /* This is not a comment */
participants (1)
-
Ignacy Gawedzki