erase member functions of std::map class template do not conform to standard:
std::map<...>::erase(iterator) and std::map<...>::erase(iterator, iterator) both return void when they should return iterator (23.3.1): bits/stl_map.h:444 void erase(iterator __position) { _M_t.erase(__position); } bits/stl_map.h:474 void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last); } The standard requires signature of these functions to be: iterator erase(iterator); iterator erase(iterator, iterator); -- Summary: Nonconforming std::map Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: leg0 at hot dot ee http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31729