http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58153
--- Comment #3 from François Dumont <fdumont at gcc dot gnu.org> --- This report entry made me wonder why iterators could not just be pointing to the node just before the one containing the pointed to value. For instance begin() iterator would contained the before_begin one. This is rather consistent with the data structure as we are using some kind of forward_list which only propose an O(1) erase_after method. In this case erase(iterator) will work just like erase_after. I am going to challenge this approach and will let you know if it has no drawback.