std::ranges::concat_view<Views...>::iterator<Const>::satisfy, prev, advance-fwd, advance-bwd
Die folgenden Expoitions-Only-Member-Funktion-Templates vereinfachen die Beschreibung.
Jede Hilfsfunktions-Vorlage hat einen Nicht-Typ-Template-Parameter vom Typ std::size_t.
- Wenn der Name des Template-Parameters N ist, ist das Template-Argument immer
it_.index(). - Wenn der Name des Template-Parameters I ist, kann das Template-Argument jeder Wert von std::size_t in
[0,sizeof...(Views))sein.
Das Template-Argument ist jedoch möglicherweise keine Compile-Zeit-Konstante, daher ist die tatsächliche Auswirkung von helper <non_const>(/* arguments */) ähnlich wie if (non_const == 0)
helper <0>(/* arguments */);
else if (non_const == 1)
helper <1>(/* arguments */);
/* other indices */
else if (non_const == (sizeof...(Views) - 1))
helper <sizeof...(Views) - 1>(/* arguments */);
.
Inhalt |
[bearbeiten] Helper templates
Mini-Hilfsvorlagen
template< std::size_t N > constexpr auto /*get-iter*/(); |
(1) | (nur Exposition*) |
template< std::size_t I > constexpr auto /*get-view*/(); |
(2) | (nur Exposition*) |
template< std::size_t I > constexpr auto /*get-begin*/(); |
(3) | (nur Exposition*) |
template< std::size_t I > constexpr auto /*get-end*/(); |
(4) | (nur Exposition*) |
template< std::size_t N > constexpr auto /*to-underlying-diff-type*/( difference_type value ); |
(5) | (nur Exposition*) |
Die Mini-Hilfsvorlagen vereinfachen die Beschreibung der Haupt-Hilfsvorlagen und Member-Funktionen. Sie sind nicht in den C++-Standarddokumenten enthalten.
it_ enthalten ist.concat_view ab.concat_view ab.get-view <I>()) zurück.concat_view ab.get-view <I>()) zurück.it_ enthalten ist. base-iter >>>(value) zurück.
std::ranges::concat_view::iterator::satisfy<N>
template< std::size_t N > constexpr void /*satisfy*/(); |
(nur Exposition*) | |
Passt die aktuelle (globale) Position von it_ an.
std::ranges::concat_view::iterator::prev<N>
template< size_t N > constexpr void /*prev*/(); |
(nur Exposition*) | |
Verschiebt it_ auf die vorherige (globale) Position.
std::ranges::concat_view::iterator::advance-fwd<N>
template< size_t N > constexpr void /*advance-fwd*/( difference_type offset, |
(nur Exposition*) | |
Bewegt die aktuelle (globale) Position um steps Schritte vorwärts.
- Wenn N gleich sizeof...(Views) - 1 ist, ist dies äquivalent zu
get-iter<N>() +=to-underlying-diff-type(steps);. - Andernfalls ist dies äquivalent zu auto n_size = ranges::distance(
get-view<N>());
if (offset + steps < n_size)get-iter<N>() +=to-underlying-diff-type(steps);
else
{it_.template emplace<N + 1>(get-begin<N + 1>());advance-fwd<N + 1>(0, offset + steps - n_size);
}.
Parameter
| offset | - | Der Offset der aktuellen (globalen) Position vom Anfang des Bereichs, auf den it_ aktuell verweist |
| Schritte | - | Die Anzahl der vorwärts zu machenden Schritte |
std::ranges::concat_view::iterator::advance-bwd<N>
template< size_t N > constexpr void /*advance-bwd*/( difference_type offset, |
(nur Exposition*) | |
Bewegt die aktuelle (globale) Position um steps Schritte rückwärts.
- Wenn N gleich 0 ist, ist dies äquivalent zu
get-iter<N>() -=to-underlying-diff-type(steps);. - Andernfalls ist dies äquivalent zu if (offset >= steps)
get-iter<N>() -=to-underlying-diff-type(steps);
else
{auto prev_size = ranges::distance(get-view<N - 1>());it_.template emplace<N - 1>(get-end<N - 1>());advance-bwd<N - 1>(prev_size, steps - offset);
}.
Parameter
| offset | - | Der Offset der aktuellen (globalen) Position vom Anfang des Bereichs, auf den it_ aktuell verweist |
| Schritte | - | Die Anzahl der rückwärts zu machenden Schritte |