Ableitungsregeln für std::ranges::subrange
Von de.cppreference.net
| Definiert in Header <ranges>
|
||
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S) -> subrange<I, S>;
|
(1) | (seit C++20) |
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S, /*make-unsigned-like-t*/<std::iter_difference_t<I>>) ->
subrange<I, S, ranges::subrange_kind::sized>;
|
(2) | (seit C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
(ranges::sized_range<R> ||
std::sized_sentinel_for<ranges::sentinel_t<R>,
ranges::iterator_t<R>>) ?
ranges::subrange_kind::sized : ranges::subrange_kind::unsized>;
|
(3) | (seit C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&, /*make-unsigned-like-t*/<ranges::range_difference_t<R>>) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
ranges::subrange_kind::sized>;
|
(4) | (seit C++20) |
Diese Ableitungsregeln werden für std::ranges::subrange bereitgestellt.
1) Leitet die Template-Argumente aus dem Typ von Iterator und Sentinel ab. Der
subrange hat eine Größenangabe, wenn std::sized_sentinel_for<S, I> erfüllt ist, wie durch das Standard-Template-Argument bestimmt.2) Leitet die Template-Argumente aus dem Typ von Iterator und Sentinel ab, während die Größe des Bereichs angegeben wird. Der
subrange hat immer eine Größenangabe.3) Leitet die Template-Argumente aus dem Typ des Bereichs ab. Der
subrange hat eine Größenangabe, wenn die Größe aus dem Bereich oder seinem Iterator und Sentinel ermittelt werden kann.4) Leitet die Template-Argumente aus dem Typ des Bereichs ab, während die Größe des Bereichs angegeben wird. Der
subrange hat immer eine Größenangabe.Für die Definition von /* make-unsigned-like-t */ siehe make-unsigned-like-t .
Hinweise
Während der Erstellung des
subrange
-Objekts,
- für (1,2) ist das Verhalten undefiniert, wenn das Iterator-Sentinel-Paar keinen gültigen Bereich bezeichnet,
- für (2,4) ist das Verhalten undefiniert, wenn die gegebene Größe nicht der Größe des Bereichs entspricht.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 3404 | C++20 | bedeutungslose Deduction Guides von paarähnlichen Typen wurden bereitgestellt | entfernt |