- add the from_range_t constructors and the related deduction guides;
- add the insert_range/assign_range/etc. member functions.
(Note: this patch is split from https://reviews.llvm.org/D142335)
Paths
| Differential D149830
[libc++][ranges] Implement the changes to node-based containers from P1206 (`ranges::to`): ClosedPublic Authored by var-const on May 4 2023, 2:37 AM.
Details
Summary
(Note: this patch is split from https://reviews.llvm.org/D142335)
Diff Detail
Event TimelineComment Actions Thanks! I don't have a lot of comments, the patch is quite large but there's a lot of mechanical changes that don't differ from class to class, which makes this easier to review.
This revision now requires changes to proceed.Jul 7 2023, 1:32 PM var-const marked 8 inline comments as done. Comment ActionsAddress most feedback.
Comment Actions LGTM w/ comments applied and CI passing.
This revision is now accepted and ready to land.Jul 17 2023, 11:19 AM var-const marked an inline comment as done. Comment ActionsRemove some unnecessary calls to std::forward
This revision was landed with ongoing or failed builds.Jul 18 2023, 11:01 AM Closed by commit rGef70fe4d264d: [libc++][ranges] Implement the changes to node-based containers from P1206… (authored by varconst <varconsteq@gmail.com>). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 541641 libcxx/include/CMakeLists.txt
libcxx/include/__iterator/ranges_iterator_traits.h
libcxx/include/forward_list
libcxx/include/list
libcxx/include/map
libcxx/include/module.modulemap.in
libcxx/include/set
libcxx/include/unordered_map
libcxx/include/unordered_set
libcxx/test/std/containers/associative/from_range_associative_containers.h
libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/map/map.cons/from_range.pass.cpp
libcxx/test/std/containers/associative/map/map.modifiers/insert_range.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.cons/from_range.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_range.pass.cpp
libcxx/test/std/containers/associative/multiset/insert_range.pass.cpp
libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/multiset/multiset.cons/from_range.pass.cpp
libcxx/test/std/containers/associative/set/insert_range.pass.cpp
libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/set/set.cons/from_range.pass.cpp
libcxx/test/std/containers/insert_range_helpers.h
libcxx/test/std/containers/insert_range_maps_sets.h
libcxx/test/std/containers/sequences/forwardlist/exception_safety.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/from_range.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp
libcxx/test/std/containers/sequences/list/exception_safety.pass.cpp
libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/list/list.cons/from_range.pass.cpp
libcxx/test/std/containers/sequences/list/list.modifiers/append_range.pass.cpp
libcxx/test/std/containers/sequences/list/list.modifiers/assign_range.pass.cpp
libcxx/test/std/containers/sequences/list/list.modifiers/insert_range.pass.cpp
libcxx/test/std/containers/sequences/list/list.modifiers/prepend_range.pass.cpp
libcxx/test/std/containers/unord/from_range_unordered_containers.h
libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/from_range.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_iter_iter.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_range.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/from_range.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_iter_iter.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_range.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/insert_iter_iter.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/insert_range.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/from_range.pass.cpp
libcxx/test/std/containers/unord/unord.set/insert_iter_iter.pass.cpp
libcxx/test/std/containers/unord/unord.set/insert_range.pass.cpp
libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/from_range.pass.cpp
libcxx/test/support/deduction_guides_sfinae_checks.h
|
Maybe we can use prepend_range(...) here instead? It would make it the same as what we do for forward_list.