https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119415
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tomasz Kaminski <[email protected]>: https://gcc.gnu.org/g:4d1b19695669e6c67b9c3df07673bc22cae3a662 commit r15-8879-g4d1b19695669e6c67b9c3df07673bc22cae3a662 Author: Tomasz KamiÅski <[email protected]> Date: Mon Mar 24 18:04:28 2025 +0100 libstdc++: Fix handling of common cpp20-only ranges for flat sets [PR119415] These patch add check to verify if common range iterators satisfies Cpp17LegacyIterator requirements (__detail::__cpp17_input_iterator), before invoking overloads of insert that accepts two iterators. As such overloads existed before c++20 iterators were introduced, they commonly assume existence of iterator_traits<..>::iterator_category, and passing a cpp20-only iterators, leads to hard errors. In case if user-defined container wants to support more efficient insertion in such cases, it should provided insert_range method, as in the case of standard containers. PR libstdc++/119415 libstdc++-v3/ChangeLog: * include/std/flat_set (_Flat_set_impl:insert_range): Add __detail::__cpp17_input_iterator check. * testsuite/23_containers/flat_multiset/1.cc: New tests * testsuite/23_containers/flat_set/1.cc: New tests Reviewed-by: Patrick Palka <[email protected]>, Jonathan Wakely <[email protected]> Signed-off-by: Tomasz KamiÅski <[email protected]>
