|
167 | 167 | requires is_object_v<T>
|
168 | 168 | class single_view; // freestanding
|
169 | 169 |
|
170 |
| - namespace views { |
171 |
| - inline constexpr @\unspec@ single = @\unspec@; // freestanding |
172 |
| - } |
| 170 | + namespace views { inline constexpr @\unspecnc@ single = @\unspecnc@; } // freestanding |
173 | 171 |
|
174 | 172 | template<bool Const, class T>
|
175 | 173 | using @\exposidnc{maybe-const}@ = conditional_t<Const, const T, T>; // \expos
|
|
182 | 180 | template<class W, class Bound>
|
183 | 181 | inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true; // freestanding
|
184 | 182 |
|
185 |
| - namespace views { |
186 |
| - inline constexpr @\unspec@ iota = @\unspec@; // freestanding |
187 |
| - } |
| 183 | + namespace views { inline constexpr @\unspecnc@ iota = @\unspecnc@; } // freestanding |
188 | 184 |
|
189 | 185 | // \ref{range.istream}, istream view
|
190 | 186 | template<@\libconcept{movable}@ Val, class CharT, class Traits = char_traits<CharT>>
|
|
195 | 191 | template<class Val>
|
196 | 192 | using wistream_view = basic_istream_view<Val, wchar_t>;
|
197 | 193 |
|
198 |
| - namespace views { template<class T> inline constexpr @\unspec@ istream = @\unspec@; } |
| 194 | + namespace views { template<class T> inline constexpr @\unspecnc@ istream = @\unspecnc@; } |
199 | 195 |
|
200 | 196 | // \ref{range.adaptor.object}, range adaptor objects
|
201 | 197 | template<class D>
|
|
204 | 200 |
|
205 | 201 | // \ref{range.all}, all view
|
206 | 202 | namespace views {
|
207 |
| - inline constexpr @\unspec@ all = @\unspec@; // freestanding |
| 203 | + inline constexpr @\unspecnc@ all = @\unspecnc@; // freestanding |
208 | 204 |
|
209 | 205 | template<@\libconcept{viewable_range}@ R>
|
210 | 206 | using all_t = decltype(all(declval<R>())); // freestanding
|
|
232 | 228 | requires @\libconcept{view}@<V> && is_object_v<Pred>
|
233 | 229 | class filter_view; // freestanding
|
234 | 230 |
|
235 |
| - namespace views { |
236 |
| - inline constexpr @\unspec@ filter = @\unspec@; // freestanding |
237 |
| - } |
| 231 | + namespace views { inline constexpr @\unspecnc@ filter = @\unspecnc@; } // freestanding |
238 | 232 |
|
239 | 233 | // \ref{range.transform}, transform view
|
240 | 234 | template<@\libconcept{input_range}@ V, @\libconcept{copy_constructible}@ F>
|
|
243 | 237 | @\exposconcept{can-reference}@<invoke_result_t<F&, range_reference_t<V>>>
|
244 | 238 | class transform_view; // freestanding
|
245 | 239 |
|
246 |
| - namespace views { |
247 |
| - inline constexpr @\unspec@ transform = @\unspec@; // freestanding |
248 |
| - } |
| 240 | + namespace views { inline constexpr @\unspecnc@ transform = @\unspecnc@; } // freestanding |
249 | 241 |
|
250 | 242 | // \ref{range.take}, take view
|
251 | 243 | template<@\libconcept{view}@> class take_view; // freestanding
|
|
254 | 246 | inline constexpr bool enable_borrowed_range<take_view<T>> = // freestanding
|
255 | 247 | enable_borrowed_range<T>;
|
256 | 248 |
|
257 |
| - namespace views { |
258 |
| - inline constexpr @\unspec@ take = @\unspec@; // freestanding |
259 |
| - } |
| 249 | + namespace views { inline constexpr @\unspecnc@ take = @\unspecnc@; } // freestanding |
260 | 250 |
|
261 | 251 | // \ref{range.take.while}, take while view
|
262 | 252 | template<@\libconcept{view}@ V, class Pred>
|
263 | 253 | requires @\libconcept{input_range}@<V> && is_object_v<Pred> &&
|
264 | 254 | @\libconcept{indirect_unary_predicate}@<const Pred, iterator_t<V>>
|
265 | 255 | class take_while_view; // freestanding
|
266 | 256 |
|
267 |
| - namespace views { |
268 |
| - inline constexpr @\unspec@ take_while = @\unspec@; // freestanding |
269 |
| - } |
| 257 | + namespace views { inline constexpr @\unspecnc@ take_while = @\unspecnc@; } // freestanding |
270 | 258 |
|
271 | 259 | // \ref{range.drop}, drop view
|
272 | 260 | template<@\libconcept{view}@ V>
|
|
276 | 264 | inline constexpr bool enable_borrowed_range<drop_view<T>> = // freestanding
|
277 | 265 | enable_borrowed_range<T>;
|
278 | 266 |
|
279 |
| - namespace views { |
280 |
| - inline constexpr @\unspec@ drop = @\unspec@; // freestanding |
281 |
| - } |
| 267 | + namespace views { inline constexpr @\unspecnc@ drop = @\unspecnc@; } // freestanding |
282 | 268 |
|
283 | 269 | // \ref{range.drop.while}, drop while view
|
284 | 270 | template<@\libconcept{view}@ V, class Pred>
|
|
290 | 276 | inline constexpr bool enable_borrowed_range<drop_while_view<T, Pred>> = // freestanding
|
291 | 277 | enable_borrowed_range<T>;
|
292 | 278 |
|
293 |
| - namespace views { |
294 |
| - inline constexpr @\unspec@ drop_while = @\unspec@; // freestanding |
295 |
| - } |
| 279 | + namespace views { inline constexpr @\unspecnc@ drop_while = @\unspecnc@; } // freestanding |
296 | 280 |
|
297 | 281 | // \ref{range.join}, join view
|
298 | 282 | template<@\libconcept{input_range}@ V>
|
299 | 283 | requires @\libconcept{view}@<V> && @\libconcept{input_range}@<range_reference_t<V>>
|
300 | 284 | class join_view; // freestanding
|
301 | 285 |
|
302 |
| - namespace views { |
303 |
| - inline constexpr @\unspec@ join = @\unspec@; // freestanding |
304 |
| - } |
| 286 | + namespace views { inline constexpr @\unspecnc@ join = @\unspecnc@; } // freestanding |
305 | 287 |
|
306 | 288 | // \ref{range.join.with}, join with view
|
307 | 289 | template<class R, class P>
|
|
313 | 295 | && @\exposconcept{compatible-joinable-ranges}@<range_reference_t<V>, Pattern>
|
314 | 296 | class join_with_view; // freestanding
|
315 | 297 |
|
316 |
| - namespace views { |
317 |
| - inline constexpr @\unspec@ join_with = @\unspec@; // freestanding |
318 |
| - } |
| 298 | + namespace views { inline constexpr @\unspecnc@ join_with = @\unspecnc@; } // freestanding |
319 | 299 |
|
320 | 300 | // \ref{range.lazy.split}, lazy split view
|
321 | 301 | template<class R>
|
|
334 | 314 | class split_view; // freestanding
|
335 | 315 |
|
336 | 316 | namespace views {
|
337 |
| - inline constexpr @\unspec@ lazy_split = @\unspec@; // freestanding |
338 |
| - inline constexpr @\unspec@ split = @\unspec@; // freestanding |
| 317 | + inline constexpr @\unspecnc@ lazy_split = @\unspecnc@; // freestanding |
| 318 | + inline constexpr @\unspecnc@ split = @\unspecnc@; // freestanding |
339 | 319 | }
|
340 | 320 |
|
341 | 321 | // \ref{range.counted}, counted view
|
342 |
| - namespace views { |
343 |
| - inline constexpr @\unspec@ counted = @\unspec@; // freestanding |
344 |
| - } |
| 322 | + namespace views { inline constexpr @\unspecnc@ counted = @\unspecnc@; } // freestanding |
345 | 323 |
|
346 | 324 | // \ref{range.common}, common view
|
347 | 325 | template<@\libconcept{view}@ V>
|
|
352 | 330 | inline constexpr bool enable_borrowed_range<common_view<T>> = // freestanding
|
353 | 331 | enable_borrowed_range<T>;
|
354 | 332 |
|
355 |
| - namespace views { |
356 |
| - inline constexpr @\unspec@ common = @\unspec@; // freestanding |
357 |
| - } |
| 333 | + namespace views { inline constexpr @\unspecnc@ common = @\unspecnc@; } // freestanding |
358 | 334 |
|
359 | 335 | // \ref{range.reverse}, reverse view
|
360 | 336 | template<@\libconcept{view}@ V>
|
|
365 | 341 | inline constexpr bool enable_borrowed_range<reverse_view<T>> = // freestanding
|
366 | 342 | enable_borrowed_range<T>;
|
367 | 343 |
|
368 |
| - namespace views { |
369 |
| - inline constexpr @\unspec@ reverse = @\unspec@; // freestanding |
370 |
| - } |
| 344 | + namespace views { inline constexpr @\unspecnc@ reverse = @\unspecnc@; } // freestanding |
371 | 345 |
|
372 | 346 | // \ref{range.elements}, elements view
|
373 | 347 | template<@\libconcept{input_range}@ V, size_t N>
|
|
385 | 359 |
|
386 | 360 | namespace views {
|
387 | 361 | template<size_t N>
|
388 |
| - inline constexpr @\unspec@ elements = @\unspec@; // freestanding |
| 362 | + inline constexpr @\unspecnc@ elements = @\unspecnc@; // freestanding |
389 | 363 | inline constexpr auto @\libmember{keys}{views}@ = elements<0>; // freestanding
|
390 | 364 | inline constexpr auto @\libmember{values}{views}@ = elements<1>; // freestanding
|
391 | 365 | }
|
|
399 | 373 | inline constexpr bool enable_borrowed_range<zip_view<Views...>> = // freestanding
|
400 | 374 | (enable_borrowed_range<Views> && ...);
|
401 | 375 |
|
402 |
| - namespace views { |
403 |
| - inline constexpr @\unspec@ zip = @\unspec@; // freestanding |
404 |
| - } |
| 376 | + namespace views { inline constexpr @\unspecnc@ zip = @\unspecnc@; } // freestanding |
405 | 377 |
|
406 | 378 | // \ref{range.zip.transform}, zip transform view
|
407 | 379 | template<@\libconcept{copy_constructible}@ F, @\libconcept{input_range}@... Views>
|
|
410 | 382 | @\exposconcept{can-reference}@<invoke_result_t<F&, range_reference_t<Views>...>>
|
411 | 383 | class zip_transform_view; // freestanding
|
412 | 384 |
|
413 |
| - namespace views { |
414 |
| - inline constexpr @\unspec@ zip_transform = @\unspec@; // freestanding |
415 |
| - } |
| 385 | + namespace views { inline constexpr @\unspecnc@ zip_transform = @\unspecnc@; } // freestanding |
416 | 386 |
|
417 | 387 | // \ref{range.adjacent}, adjacent view
|
418 | 388 | template<@\libconcept{forward_range}@ V, size_t N>
|
|
425 | 395 |
|
426 | 396 | namespace views {
|
427 | 397 | template<size_t N>
|
428 |
| - inline constexpr @\unspec@ adjacent = @\unspec@ ; // freestanding |
| 398 | + inline constexpr @\unspecnc@ adjacent = @\unspecnc@; // freestanding |
429 | 399 | inline constexpr auto @\libmember{pairwise}{views}@ = adjacent<2>; // freestanding
|
430 | 400 | }
|
431 | 401 |
|
|
436 | 406 |
|
437 | 407 | namespace views {
|
438 | 408 | template<size_t N>
|
439 |
| - inline constexpr @\unspec@ adjacent_transform = @\unspec@; // freestanding |
| 409 | + inline constexpr @\unspecnc@ adjacent_transform = @\unspecnc@; // freestanding |
440 | 410 | inline constexpr auto @\libmember{pairwise_transform}{views}@ = adjacent_transform<2>; // freestanding
|
441 | 411 | }
|
442 | 412 |
|
|
453 | 423 | inline constexpr bool enable_borrowed_range<chunk_view<V>> = // freestanding
|
454 | 424 | @\libconcept{forward_range}@<V> && enable_borrowed_range<V>;
|
455 | 425 |
|
456 |
| - namespace views { |
457 |
| - inline constexpr @\unspec@ chunk = @\unspec@; // freestanding |
458 |
| - } |
| 426 | + namespace views { inline constexpr @\unspecnc@ chunk = @\unspecnc@; } // freestanding |
459 | 427 |
|
460 | 428 | // \ref{range.slide}, slide view
|
461 | 429 | template<@\libconcept{forward_range}@ V>
|
|
466 | 434 | inline constexpr bool enable_borrowed_range<slide_view<V>> =
|
467 | 435 | enable_borrowed_range<V>; // freestanding
|
468 | 436 |
|
469 |
| - namespace views { |
470 |
| - inline constexpr @\unspec@ slide = @\unspec@; // freestanding |
471 |
| - } |
| 437 | + namespace views { inline constexpr @\unspecnc@ slide = @\unspecnc@; } // freestanding |
472 | 438 |
|
473 | 439 | // \ref{range.chunk.by}, chunk by view
|
474 | 440 | template<@\libconcept{forward_range}@ V, @\libconcept{indirect_binary_predicate}@<iterator_t<V>, iterator_t<V>> Pred>
|
475 | 441 | requires @\libconcept{view}@<V> && is_object_v<Pred>
|
476 | 442 | class chunk_by_view; // freestanding
|
477 | 443 |
|
478 |
| - namespace views { // freestanding |
479 |
| - inline constexpr @\unspec@ chunk_by = @\unspec@; // freestanding |
480 |
| - } |
| 444 | + namespace views { inline constexpr @\unspecnc@ chunk_by = @\unspecnc@; } // freestanding |
481 | 445 | }
|
482 | 446 |
|
483 | 447 | namespace std {
|
|
506 | 470 | using type = S; // freestanding
|
507 | 471 | };
|
508 | 472 |
|
509 |
| - struct from_range_t { // freestanding |
510 |
| - explicit from_range_t() = default; // freestanding |
511 |
| - }; |
| 473 | + struct from_range_t { explicit from_range_t() = default; }; // freestanding |
512 | 474 | inline constexpr from_range_t from_range{}; // freestanding
|
513 | 475 | }
|
514 | 476 | \end{codeblock}
|
|
0 commit comments