Hi With the recent fixes to std::vector implementation all 23_containers and 25_algorithms tests are passing in C++98 and C++20 modes. libstdc++: Reimplement __gnu_cxx::__ops operators Replace functors using iterators as input to adopt functors that are matching the same Standard expectations as the ones imposed on functor-aware algos. It forces to have iterators dereferenced at algo level and not in the predefined functors anymore. Also make sure that in algos implementation details functors are passed by reference rather than by copy. libstdc++-v3/ChangeLog:         * include/bits/move.h         (_GLIBCXX_FWDREF): Now substituted by a lvalue-reference in pre-c++11 mode.         (_GLIBCXX_FWDCREF): New macro, substituted by a const lvalue reference in         pre-c++11 mode.         * include/bits/stl_tree.h: Replace _GLIBCXX_FWDREF usage by _GLIBCXX_FWDCREF.         * include/std/functional: Include predefined_ops.h.         (_Not_fn): Move to...         * include/bits/predefined_ops.h: ...here, and expose a version         in pre-C++14 mode.         (__not_fn): New, use latter.         (_Iter_less_iter, _Iter_less_val, _Val_less_iter, _Iter_equal_to_iter)         (_Iter_equal_to_val, _Iter_comp_iter, _Iter_comp_val, _Val_comp_iter)         (_Iter_equals_val, _Iter_equals_iter, _Iter_pred, _Iter_comp_val)         (_Iter_comp_to_val, _Iter_comp_to_iter, _Iter_negate): Remove.         (__iter_less_iter, __iter_less_val, __iter_comp_val, __val_less_iter)         (__val_comp_iter, __iter_equal_to_iter, __iter_equal_to_val, __iter_comp_iter)         (__val_comp_iter, __iter_equals_val, __iter_comp_iter, __pred_iter): Remove.         (_Less, _Equal_to, _Equal_to_val, _Comp_val): New.         (__less, __equal_to, __comp_val): New.         * include/bits/stl_algo.h: Adapt all algos to use new __gnu_cxx::__ops operators.         When possible use std::move to pass predicates between routines.         * include/bits/stl_algobase.h: Likewise.         * include/bits/stl_heap.h: Likewise.         * include/std/deque: Cleanup usage of __gnu_cxx::__ops operators. Replace usage of         std::ref by std::move to pass predicate to std::__remove_if.         * include/std/string: Likewise.         * include/std/vector: Likewise.         * src/c++17/memory_resource.cc: Include . I'm not proud of the _GLIBCXX_FWDCREF but I'm sure you'll find a better name ! Ok to commit once I've completed the test coverage ? François