|
214 | 214 | // \ref{range.take}, take view
|
215 | 215 | template<@\libconcept{view}@> class take_view;
|
216 | 216 |
|
| 217 | + template<class T> |
| 218 | + inline constexpr bool enable_borrowed_range<take_view<T>> = enable_borrowed_range<T>; |
| 219 | + |
217 | 220 | namespace views { inline constexpr @\unspec@ take = @\unspec@; }
|
218 | 221 |
|
219 | 222 | // \ref{range.take.while}, take while view
|
|
228 | 231 | template<@\libconcept{view}@ V>
|
229 | 232 | class drop_view;
|
230 | 233 |
|
| 234 | + template<class T> |
| 235 | + inline constexpr bool enable_borrowed_range<drop_view<T>> = enable_borrowed_range<T>; |
| 236 | + |
231 | 237 | namespace views { inline constexpr @\unspec@ drop = @\unspec@; }
|
232 | 238 |
|
233 | 239 | // \ref{range.drop.while}, drop while view
|
|
236 | 242 | @\libconcept{indirect_unary_predicate}@<const Pred, iterator_t<V>>
|
237 | 243 | class drop_while_view;
|
238 | 244 |
|
| 245 | + template<class T, class Pred> |
| 246 | + inline constexpr bool enable_borrowed_range<drop_while_view<T, Pred>> = |
| 247 | + enable_borrowed_range<T>; |
| 248 | + |
239 | 249 | namespace views { inline constexpr @\unspec@ drop_while = @\unspec@; }
|
240 | 250 |
|
241 | 251 | // \ref{range.join}, join view
|
|
267 | 277 | requires (!@\libconcept{common_range}@<V> && copyable<iterator_t<V>>)
|
268 | 278 | class common_view;
|
269 | 279 |
|
| 280 | + template<class T> |
| 281 | + inline constexpr bool enable_borrowed_range<common_view<T>> = enable_borrowed_range<T>; |
| 282 | + |
270 | 283 | namespace views { inline constexpr @\unspec@ common = @\unspec@; }
|
271 | 284 |
|
272 | 285 | // \ref{range.reverse}, reverse view
|
273 | 286 | template<@\libconcept{view}@ V>
|
274 | 287 | requires @\libconcept{bidirectional_range}@<V>
|
275 | 288 | class reverse_view;
|
276 | 289 |
|
| 290 | + template<class T> |
| 291 | + inline constexpr bool enable_borrowed_range<reverse_view<T>> = enable_borrowed_range<T>; |
| 292 | + |
277 | 293 | namespace views { inline constexpr @\unspec@ reverse = @\unspec@; }
|
278 | 294 |
|
279 | 295 | // \ref{range.elements}, elements view
|
280 | 296 | template<@\libconcept{input_range}@ V, size_t N>
|
281 | 297 | requires @\seebelow@
|
282 | 298 | class elements_view;
|
283 | 299 |
|
| 300 | + template<class T, size_t N> |
| 301 | + inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>; |
| 302 | + |
284 | 303 | template<class R>
|
285 | 304 | using keys_view = elements_view<views::all_t<R>, 0>;
|
286 | 305 | template<class R>
|
|
0 commit comments