Deduktionshilfen für std::ranges::subrange
Von cppreference.com
| Definiert in der Header-Datei <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>>) -> |
(2) | (seit C++20) |
| template< ranges::borrowed_range<R> > subrange(R&&) -> |
(3) | (seit C++20) |
| template< ranges::borrowed_range<R> > subrange(R&&, /*make-unsigned-like-t*/<ranges::range_difference_t<R>>) -> |
(4) | (seit C++20) |
Diese Deduktionshilfen werden für std::ranges::subrange bereitgestellt.
1) Deduziert die Template-Argumente aus dem Typ des Iterators und des Sentinels. Der
subrange ist "sized" (hat eine bekannte Größe), wenn std::sized_sentinel_for<S, I> erfüllt ist, wie durch das Standard-Template-Argument bestimmt.2) Deduziert die Template-Argumente aus dem Typ des Iterators und des Sentinels, während die Größe des Bereichs angegeben ist. Der
subrange ist immer "sized".3) Deduziert die Template-Argumente aus dem Typ des Bereichs. Der
subrange ist "sized", wenn die Größe aus dem Bereich oder seinem Iterator und Sentinel ermittelt werden kann.4) Deduziert die Template-Argumente aus dem Typ des Bereichs, während die Größe des Bereichs angegeben ist. Der
subrange ist immer "sized".Für die Definition von /* make-unsigned-like-t */ siehe make-unsigned-like-t .
[bearbeiten] Anmerkungen
Beim Erstellen des subrange-Objekts gilt:
- 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 angegebene Größe nicht mit der Größe des Bereichs übereinstimmt.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3404 | C++20 | bedeutunglose Deduktionshilfen von paarähnlichen Typen wurden bereitgestellt | entfernt |