http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59165
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think I remember the rationale now: std::begin and std::end only work if c.begin() and c.end() xist, in which case range-based for will use those members directly anyway.