|
415 | 415 | O ofirst, S olast); // see \ref{algorithms.parallel.overloads} |
416 | 416 | } |
417 | 417 |
|
418 | | - template<class NoThrowForwardIterator, class T> |
| 418 | + template<class NoThrowForwardIterator, |
| 419 | + class T = iterator_traits<NoThrowForwardIterator>::value_type> |
419 | 420 | constexpr void uninitialized_fill(NoThrowForwardIterator first, // freestanding |
420 | 421 | NoThrowForwardIterator last, const T& x); |
421 | | - template<class ExecutionPolicy, class NoThrowForwardIterator, class T> |
| 422 | + template<class ExecutionPolicy, class NoThrowForwardIterator, |
| 423 | + class T = iterator_traits<NoThrowForwardIterator>::value_type> |
422 | 424 | void uninitialized_fill(ExecutionPolicy&& exec, // freestanding-deleted, |
423 | 425 | NoThrowForwardIterator first, // see \ref{algorithms.parallel.overloads} |
424 | 426 | NoThrowForwardIterator last, |
425 | 427 | const T& x); |
426 | | - template<class NoThrowForwardIterator, class Size, class T> |
| 428 | + template<class NoThrowForwardIterator, class Size, |
| 429 | + class T = iterator_traits<NoThrowForwardIterator>::value_type> |
427 | 430 | constexpr NoThrowForwardIterator |
428 | 431 | uninitialized_fill_n(NoThrowForwardIterator first, Size n, const T& x); // freestanding |
429 | | - template<class ExecutionPolicy, class NoThrowForwardIterator, class Size, class T> |
| 432 | + template<class ExecutionPolicy, class NoThrowForwardIterator, class Size, |
| 433 | + class T = iterator_traits<NoThrowForwardIterator>::value_type> |
430 | 434 | NoThrowForwardIterator |
431 | 435 | uninitialized_fill_n(ExecutionPolicy&& exec, // freestanding-deleted, |
432 | 436 | NoThrowForwardIterator first, // see \ref{algorithms.parallel.overloads} |
433 | 437 | Size n, const T& x); |
434 | 438 |
|
435 | 439 | namespace ranges { |
436 | | - template<@\exposconcept{nothrow-forward-iterator}@ I, @\exposconcept{nothrow-sentinel-for}@<I> S, class T> |
| 440 | + template<@\exposconcept{nothrow-forward-iterator}@ I, @\exposconcept{nothrow-sentinel-for}@<I> S, class T = iter_value_t<I>> |
437 | 441 | requires @\libconcept{constructible_from}@<iter_value_t<I>, const T&> |
438 | 442 | constexpr I uninitialized_fill(I first, S last, const T& x); // freestanding |
439 | | - template<@\exposconcept{nothrow-forward-range}@ R, class T> |
| 443 | + template<@\exposconcept{nothrow-forward-range}@ R, class T = range_value_t<R>> |
440 | 444 | requires @\libconcept{constructible_from}@<range_value_t<R>, const T&> |
441 | 445 | constexpr borrowed_iterator_t<R> uninitialized_fill(R&& r, const T& x); // freestanding |
442 | 446 |
|
443 | | - template<@\exposconcept{nothrow-forward-iterator}@ I, class T> |
| 447 | + template<@\exposconcept{nothrow-forward-iterator}@ I, class T = iter_value_t<I>> |
444 | 448 | requires @\libconcept{constructible_from}@<iter_value_t<I>, const T&> |
445 | 449 | constexpr I uninitialized_fill_n(I first, // freestanding |
446 | 450 | iter_difference_t<I> n, const T& x); |
447 | 451 |
|
448 | 452 | template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{nothrow-random-access-iterator}@ I, |
449 | | - @\exposconcept{nothrow-sized-sentinel-for}@<I> S, class T> |
| 453 | + @\exposconcept{nothrow-sized-sentinel-for}@<I> S, class T = iter_value_t<I>> |
450 | 454 | requires @\libconcept{constructible_from}@<iter_value_t<I>, const T&> |
451 | 455 | I uninitialized_fill(Ep&& exec, I first, S last, const T& x); // freestanding-deleted, |
452 | 456 | // see \ref{algorithms.parallel.overloads} |
453 | | - template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{nothrow-sized-random-access-range}@ R, class T> |
| 457 | + template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{nothrow-sized-random-access-range}@ R, |
| 458 | + class T = range_value_t<R>> |
454 | 459 | requires @\libconcept{constructible_from}@<range_value_t<R>, const T&> |
455 | 460 | borrowed_iterator_t<R> uninitialized_fill(Ep&& exec, R&& r, // freestanding-deleted, |
456 | 461 | const T& x); // see \ref{algorithms.parallel.overloads} |
457 | 462 |
|
458 | | - template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{nothrow-random-access-iterator}@ I, class T> |
| 463 | + template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{nothrow-random-access-iterator}@ I, class T = iter_value_t<I>> |
459 | 464 | requires @\libconcept{constructible_from}@<iter_value_t<I>, const T&> |
460 | 465 | I uninitialized_fill_n(Ep&& exec, I first, // freestanding-deleted, |
461 | 466 | iter_difference_t<I> n, const T& x); // see \ref{algorithms.parallel.overloads} |
|
0 commit comments