@@ -10,9 +10,8 @@ module;
10
10
11
11
export module containers.range_view;
12
12
13
- import containers.algorithms.compare;
14
- import containers.array;
15
13
import containers.begin_end;
14
+ import containers.c_array;
16
15
import containers.common_iterator_functions;
17
16
import containers.forward_random_access_range;
18
17
import containers.has_member_size;
@@ -165,6 +164,13 @@ range_view(Range &&) -> range_view<
165
164
decltype (bounded::declval<Range &&>().size())
166
165
>;
167
166
167
+ template <typename T, std::size_t size>
168
+ range_view (c_array<T, size> &) -> range_view<
169
+ contiguous_iterator<T, bounded::constant<size>>,
170
+ compute_end_from_size,
171
+ bounded::constant_t <bounded::normalize<size>>
172
+ >;
173
+
168
174
template <iterator Iterator, sentinel_for<Iterator> Sentinel>
169
175
range_view (Iterator, Sentinel) -> range_view<
170
176
Iterator,
@@ -189,37 +195,4 @@ constexpr auto to_range_view(std::pair<Iterator, Sentinel> pair) {
189
195
return range_view (std::move (pair).first , std::move (pair).second );
190
196
}
191
197
192
-
193
198
} // namespace containers
194
-
195
- static_assert (containers::range_view<int *>(nullptr , nullptr ).begin() == nullptr );
196
- static_assert (containers::range_view(static_cast <int *>(nullptr ), 0 ).data() == nullptr );
197
- static_assert (containers::range_view(static_cast <int *>(nullptr ), static_cast <int *>(nullptr )).data() == nullptr );
198
- static_assert (containers::range_view<int *>(nullptr , nullptr ).end() == nullptr );
199
- static_assert (containers::range<containers::range_view<int *>>);
200
-
201
- constexpr auto a = containers::array({0 , 1 , 2 , 3 , 4 });
202
-
203
- static_assert (std::same_as<
204
- decltype (containers::range_view(a)),
205
- containers::range_view<
206
- containers::contiguous_iterator<int const , 5_bi>,
207
- containers::compute_end_from_size,
208
- bounded::constant_t<5>
209
- >
210
- >);
211
-
212
- static_assert (containers::equal(a, containers::range_view(a)));
213
-
214
- static_assert (bounded::convertible_to<
215
- std::string_view,
216
- containers::range_view<int *, int *, std::size_t >
217
- >);
218
- static_assert (bounded::convertible_to<
219
- std::span<int >,
220
- containers::range_view<int *, int *, std::size_t >
221
- >);
222
- static_assert (bounded::convertible_to<
223
- std::span<int const >,
224
- containers::range_view<int *, int *, std::size_t >
225
- >);
0 commit comments