[libc++][ranges] Implement `ranges::rotate`.
authorKonstantin Varlamov <varconst@apple.com>
Wed, 3 Aug 2022 23:04:14 +0000 (16:04 -0700)
committerKonstantin Varlamov <varconst@apple.com>
Wed, 3 Aug 2022 23:04:24 +0000 (16:04 -0700)
commit36c746ca2d5b325a7ac64135c1ff8774c06ab34c
treec081b21b9c5211da27c90966c72fb81232c72296
parent42c15ca630126cafdd646ac3874fc6b1a110a8ca
[libc++][ranges] Implement `ranges::rotate`.

Also fix `ranges::stable_sort` and `ranges::inplace_merge` to support
proxy iterators now that their internal implementations can correctly
dispatch `rotate`.

Differential Revision: https://reviews.llvm.org/D130758
21 files changed:
libcxx/docs/Status/RangesAlgorithms.csv
libcxx/include/CMakeLists.txt
libcxx/include/__algorithm/algorithm_family.h [deleted file]
libcxx/include/__algorithm/inplace_merge.h
libcxx/include/__algorithm/iterator_operations.h
libcxx/include/__algorithm/move.h
libcxx/include/__algorithm/move_backward.h
libcxx/include/__algorithm/ranges_move.h
libcxx/include/__algorithm/ranges_rotate.h [new file with mode: 0644]
libcxx/include/__algorithm/ranges_swap_ranges.h
libcxx/include/__algorithm/rotate.h
libcxx/include/__algorithm/stable_partition.h
libcxx/include/__algorithm/swap_ranges.h
libcxx/include/__iterator/reverse_iterator.h
libcxx/include/algorithm
libcxx/include/module.modulemap.in
libcxx/test/libcxx/private_headers.verify.cpp
libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp [new file with mode: 0644]
libcxx/test/std/algorithms/ranges_robust_against_dangling.pass.cpp
libcxx/test/std/algorithms/ranges_robust_against_proxy_iterators.pass.cpp
libcxx/test/std/library/description/conventions/customization.point.object/niebloid.compile.pass.cpp