http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57010
--- Comment #8 from Marc Glisse <glisse at gcc dot gnu.org> 2013-04-20 11:25:30 UTC --- (In reply to comment #6) > More to the point, I'm under the impression that preliminarily checking > (__last > - __first > 1) is more user friendly as undefined behavior in case __first == > __last happens to be true. Forgot to mention: this version should have the same user-friendliness, use of != vs < is mostly orthogonal. if (first < --__last) (but you can stick to your version, I was only proposing an alternative)