std::ranges::view_interface<D>::back
Von cppreference.com
< cpp | ranges | view interface
| constexpr decltype(auto) back() requires ranges::bidirectional_range<D> && ranges::common_range<D>; |
(1) | (seit C++20) |
| constexpr decltype(auto) back() const requires ranges::bidirectional_range<const D> && ranges::common_range<const D>; |
(2) | (seit C++20) |
Die Standardimplementierung der Memberfunktion back() gibt das letzte Element in der Ansicht des abgeleiteten Typs zurück. Ob das Element per Wert oder per Referenz zurückgegeben wird, hängt vom operator* des Iteratortyps ab.
1) Sei
derived static_cast<D&>(*this). Äquivalent zu return *ranges::prev(ranges::end(derived));. Das Verhalten ist undefiniert, wenn empty() true ist (d.h. der Anfangs-Iterator ist gleich dem Sentinel), selbst wenn der auf dieselbe Weise erhaltene Iterator dereferenzierbar ist.2) Gleich wie (1), außer dass
derived gleich static_cast<const D&>(*this) ist.Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Das letzte Element in der Ansicht.
[bearbeiten] Hinweise
In C++20 stellt kein Typ, der von std::ranges::view_interface abgeleitet ist, in der Standardbibliothek eine eigene back() Memberfunktion bereit.
Die folgenden abgeleiteten Typen können jedoch die Standardimplementierungen nicht verwenden, da sie weder bidirectional_range noch common_range erfüllen.
- std::ranges::basic_istream_view
- std::ranges::lazy_split_view
- std::ranges::split_view
- std::ranges::take_while_view
Die geerbte Memberfunktion back() ist für std::ranges::empty_view verfügbar, aber ein Aufruf führt immer zu undefiniertem Verhalten.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++14) |
gibt einen Reverse-Iterator zum Anfang eines Containers oder Arrays zurück (function template) |
| (C++20) |
gibt einen Reverse-Iterator zu einem Range zurück (Customization Point Objekt) |
| (C++20) |
gibt einen Reverse-Iterator zu einem schreibgeschützten Range zurück (Customization Point Objekt) |