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)