http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59042
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- And in [back.insert.iterator] the standard explicitly requires this: template <class Container> class back_insert_iterator : public iterator<output_iterator_tag,void,void,void,void>{