https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100833

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jonathan Wakely
<r...@gcc.gnu.org>:

https://gcc.gnu.org/g:88ed4abb351117f3b7ef9174b3f538c73e6012c7

commit r11-8502-g88ed4abb351117f3b7ef9174b3f538c73e6012c7
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Jun 1 16:02:45 2021 +0100

    libstdc++: Fix return value of std::ranges::advance [PR 100833]

    The three-argument form of ranges::advance is supposed to return the
    difference between the second argument and the distance the iterator was
    advanced. When a non-random-access iterator is not advanced (because it
    already equals the sentinel) we were returning 0 rather than n - 0.

    libstdc++-v3/ChangeLog:

            PR libstdc++/100833
            * include/bits/ranges_base.h (ranges::advance(iter, n, sentinel)):
            Fix return value for no-op case.
            * testsuite/24_iterators/range_operations/advance.cc: Test
            return values of three-argument overload.

    (cherry picked from commit d8326291695c0f13124c232ddf4fd34e3310e649)

Reply via email to