https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94354
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:81a8d137c22953df2ea046466c62cd26c0dba103 commit r10-7434-g81a8d137c22953df2ea046466c62cd26c0dba103 Author: Jonathan Wakely <jwak...@redhat.com> Date: Fri Mar 27 23:21:58 2020 +0000 libstdc++: Add remaining C++20 changes to iterator adaptors This adds the missing parts of P0896R4 to reverse_iterator and move_iterator, so that they meet the C++20 requirements. This should be the last piece of P0896R4, meaning ranges support is now complete. The PR 94354 bug with reverse_iterator's comparisons is fixed for C++20 only, but that change should be extended to C++11, C++14 and C++17 modes in stage 1. * include/bits/stl_iterator.h (reverse_iterator::iterator_concept) (reverse_iterator::iterator_category): Define for C++20. (reverse_iterator): Define comparison operators correctly for C++20. (__normal_iterator): Add constraints to comparison operators for C++20. (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new overload for input iterators. (move_iterator): Add constraints to comparison operators for C++20. Define operator<=> for C++20. * testsuite/24_iterators/move_iterator/input_iterator.cc: New test. * testsuite/24_iterators/move_iterator/move_only.cc: New test. * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test. * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.