[Bug libstdc++/100639] reverse_iterator<I>::reference erroneously uses iterator_traits<I>::reference instead of iter_reference_t<I>

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jun 10 18:49:53 GMT 2021


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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Patrick Palka
<ppalka@gcc.gnu.org>:

https://gcc.gnu.org/g:c8bd39bc10eac3028dbf509b27457172360e6e8c

commit r10-9902-gc8bd39bc10eac3028dbf509b27457172360e6e8c
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 20 14:08:17 2021 -0400

    libstdc++: Implement missing P0896R4 changes to reverse_iterator [PR100639]

    This implements the P0896R4 changes to reverse_iterator's member types
    value_type, difference_type and reference in C++20 mode, which fixes
    taking the reverse_iterator of an iterator with a non-integral
    difference_type (such as iota_view<long long>).

    libstdc++-v3/ChangeLog:

            PR libstdc++/100639
            * include/bits/stl_iterator.h (reverse_iterator::difference_type):
            In C++20 mode, define in terms of iter_difference_t as per P0896R4.
            (reverse_iterator::reference): Likewise, but with iter_reference_t.
            (reverse_iterator::value_type): Likewise, but with iter_value_t.
            * testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
            * testsuite/24_iterators/reverse_iterator/100639.cc: New test.

    (cherry picked from commit d5cbe0f0d4b7bc11f80b2236521f90ec94e95767)


More information about the Gcc-bugs mailing list