[libc++][ranges] implement `std::views::elements_view`
`subrange` is also a `tuple-like`. To avoid the add entire `subrange` dependencies to `tuple-like`, we need forward declaration of `subrange`. However, the class template constraints of `subrange` currently requires `__iterator/concepts.h`, which requires `<concepts>`. The problem is that currently `tuple-like` is used in several different places, including libc++ extension for pair constructors. we don't want to add `<concepts>` to pair and other stuff. So this change also created several small headers that `subrange`'s declaration needed inside `__iterator/concepts/`
Differential Revision: https://reviews.llvm.org/D136268
NOKEYCHECK=True
GitOrigin-RevId: 94461822c75d5080bf648f86552f7a59b76905c9
diff --git a/include/module.modulemap.in b/include/module.modulemap.in
index d0cb522..5d4cf53 100644
--- a/include/module.modulemap.in
+++ b/include/module.modulemap.in
@@ -1229,6 +1229,7 @@
module data { private header "__ranges/data.h" }
module drop_view { private header "__ranges/drop_view.h" }
module drop_while_view { private header "__ranges/drop_while_view.h" }
+ module elements_view { private header "__ranges/elements_view.h" }
module empty { private header "__ranges/empty.h" }
module empty_view { private header "__ranges/empty_view.h" }
module enable_borrowed_range { private header "__ranges/enable_borrowed_range.h" }
@@ -1250,7 +1251,11 @@
module reverse_view { private header "__ranges/reverse_view.h" }
module single_view { private header "__ranges/single_view.h" }
module size { private header "__ranges/size.h" }
- module subrange { private header "__ranges/subrange.h" }
+ module subrange {
+ private header "__ranges/subrange.h"
+
+ module subrange_fwd { private header "__fwd/subrange.h" }
+ }
module take_view { private header "__ranges/take_view.h" }
module take_while_view { private header "__ranges/take_while_view.h" }
module transform_view {
@@ -1365,11 +1370,13 @@
module apply_cv { private header "__tuple_dir/apply_cv.h" }
module get_fwd { private header "__fwd/get.h" }
module make_tuple_types { private header "__tuple_dir/make_tuple_types.h" }
+ module pair_like { private header "__tuple_dir/pair_like.h" }
module sfinae_helpers { private header "__tuple_dir/sfinae_helpers.h" }
module tuple_element { private header "__tuple_dir/tuple_element.h" }
module tuple_fwd { private header "__fwd/tuple.h" }
module tuple_indices { private header "__tuple_dir/tuple_indices.h" }
module tuple_like { private header "__tuple_dir/tuple_like.h" }
+ module tuple_like_ext { private header "__tuple_dir/tuple_like_ext.h" }
module tuple_size { private header "__tuple_dir/tuple_size.h" }
module tuple_types { private header "__tuple_dir/tuple_types.h" }
}