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