Namespaces
Variants

std::ranges::transform_view<V,F>::iterator<Const>::base

Von de.cppreference.net
 
 
Ranges-Bibliothek
Range-Adapter
 
 
constexpr const ranges::iterator_t<Base>& base() const & noexcept;
(1) (seit C++20)
constexpr ranges::iterator_t<Base> base() &&;
(2) (seit C++20)

Gibt den zugrundeliegenden Iterator zurück.

1) Gibt eine Referenz auf den zugrundeliegenden Iterator zurück.
2) Konstruiert das Ergebnis per Verschiebung aus dem zugrundeliegenden Iterator.

Parameter

(keine)

Rückgabewert

1) Ein Verweis auf den zugrundeliegenden Iterator.
2) Ein Iterator, der aus dem zugrundeliegenden Iterator move-konstruiert wurde.

Beispiel

#include <algorithm>
#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    const auto v = { 0, 1, 2, 3, 4 };
    auto x2 = [](int x) { return x << 1; };
    std::ranges::transform_view tv{ v, x2 };
    std::ostream_iterator<int> ostr{ std::cout, " " };
    std::ranges::copy(v, ostr), std::cout << '\n';
    std::ranges::copy(tv.base(), ostr), std::cout << '\n';
    std::ranges::copy(tv, ostr), std::cout << '\n';
}

Ausgabe:

0 1 2 3 4
0 1 2 3 4
0 2 4 6 8

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 3533 C++20 die const & Überladung von base gibt eine Kopie des zugrundeliegenden Iterators zurück gibt eine Referenz zurück
LWG 3593 C++20 die const & Überladung von base könnte nicht noexcept sein als noexcept festgelegt