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

--- Comment #10 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by Patrick Palka
<[email protected]>:

https://gcc.gnu.org/g:236279e8ed27ef759a01064dc6da55fecf94a620

commit r15-10561-g236279e8ed27ef759a01064dc6da55fecf94a620
Author: Patrick Palka <[email protected]>
Date:   Fri Nov 28 15:38:04 2025 -0500

    libstdc++: Correctly implement LWG 3946 changes to const_iterator_t
[PR122842]

    LWG 3946 made const_iterator_t/sentinel_t agree with ranges::cbegin/cend
    by defining the aliases in terms of the CPOs, but I defined it the other
    way around in an incorrect way that made the aliases not consider
    range-ness of const T via __possibly_const_range.  This patch
    reimplements the proposed resolution in a more obviously correct way,
    mirroring the wording.

            PR libstdc++/122842

    libstdc++-v3/ChangeLog:

            * include/bits/ranges_base.h (__access:_CBegin): Define in
            terms of const_iterator directly, not const_iterator_t.
            (__access::_CEnd): Likewise in terms of const_sentinel vs
            const_sentinel_t.
            (const_iterator_t): Move down definition and define in terms
            of ranges::cbegin as per LWG 3946.
            (const_sentinel_t): Likewise in terms of ranges::cend.
            * testsuite/24_iterators/const_iterator/1.cc (test02): Correct
            test for int[], std::array and std::vector.  Also test
            std::string.

    Reviewed-by: Tomasz KamiÅski <[email protected]>
    Reviewed-by: Jonathan Wakely <[email protected]>
    (cherry picked from commit 2d3142c00934c419755c17dd85ecdb0e72f249d1)

Reply via email to