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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by Patrick Palka
<ppa...@gcc.gnu.org>:

https://gcc.gnu.org/g:48d6f5dbb0e412266ebb77def04ed378ca856029

commit r15-9751-g48d6f5dbb0e412266ebb77def04ed378ca856029
Author: Patrick Palka <ppa...@redhat.com>
Date:   Thu May 29 10:11:57 2025 -0400

    libstdc++: Fix tuple/pair confusion with std::erase_if(flat_map) [PR120465]

    std::erase_if for flat_map/multimap is implemented via ranges::erase_if
    over a zip_view of the keys and values, the value_type of which is a
    tuple, but the given predicate needs to be called with a pair (flat_map's
    value_type).  So use a projection to convert the tuple into a suitable
    pair.

            PR libstdc++/120465

    libstdc++-v3/ChangeLog:

            * include/std/flat_map (_Flat_map_impl::_M_erase_if): Use a
            projection with ranges::remove_if to pass a pair instead of
            a tuple to the predicate.
            * testsuite/23_containers/flat_map/1.cc (test07): Strengthen
            to expect the argument passed to the predicate is a pair.
            * testsuite/23_containers/flat_multimap/1.cc (test07): Likewise.

    Co-authored-by: Jonathan Wakely <jwak...@redhat.com>
    Reviewed-by: Tomasz KamiÅski <tkami...@redhat.com>
    Reviewed-by: Jonathan Wakely <jwak...@redhat.com>
    (cherry picked from commit 589b27ec5769410e036df57645ff1eb7c765f692)

Reply via email to