std::ranges::views::as_const, std::ranges::as_const_view
| Definiert in der Header-Datei <ranges> |
||
| template< ranges::view V > requires ranges::input_range<V> |
(1) | (seit C++23) |
| namespace views { inline constexpr /* nicht spezifiziert */ as_const = /* nicht spezifiziert */; |
(2) | (seit C++23) |
| Aufruf-Signatur |
||
| template< ranges::viewable_range R > requires /* siehe unten */ |
(seit C++23) | |
view darstellt, der ebenfalls ein constant_range ist. Eine as_const_view hat immer schreibgeschützte Elemente (sofern nicht leer).- views::all(e), falls es ein wohlgeformter Ausdruck ist und views::all_t<T>
constant_rangemodelliert; - andernfalls, std::span<const X, Extent>(e) für einen Typ
Xund eine AusdehnungExtent, wennUbezeichnet std::span<X, Extent>; - andernfalls, ranges::ref_view(static_cast<const X&>(e.base())) wenn
Ubezeichnet ranges::ref_view<X> für einen TypXund const Xconstant_rangemodelliert; - andernfalls, ranges::ref_view(static_cast<const U&>(e)) wenn
eein L-Wert ist, const Uconstant_rangemodelliert undUnichtviewmodelliert. - andernfalls, as_const_view{e}.
as_const_view modelliert immer constant_range und modelliert die Konzepte contiguous_range, random_access_range, bidirectional_range, forward_range, borrowed_range, common_range und sized_range, wenn die zugrunde liegende Ansicht V die entsprechenden Konzepte modelliert.
Inhalt |
[edit] Datenelemente
| Mitglied | Beschreibung |
V base_ (privat) |
die zugrunde liegende Ansicht ((exposition-only member object*) |
[edit] Memberfunktionen
konstruiert eine as_const_view(öffentliche Memberfunktion) | |
gibt die zugrunde liegende Ansicht V zurück(öffentliche Memberfunktion) | |
gibt den Anfangsiterator der as_const_view zurück(öffentliche Memberfunktion) | |
gibt den End-Sentinel der as_const_view zurück(öffentliche Memberfunktion) | |
| gibt die Größe der Ansicht zurück, wenn sie beschränkt ist (öffentliche Memberfunktion) | |
Geerbt von std::ranges::view_interface | |
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur, wenn sie sized_range oder forward_range erfüllt(public member function of std::ranges::view_interface<D>) | |
| (C++23) |
gibt einen konstanten Iterator zum Anfang des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| (C++23) |
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur, wenn ranges::empty darauf anwendbar ist (public member function of std::ranges::view_interface<D>) | |
gibt die Adresse der Daten der abgeleiteten Ansicht zurück, nur bereitgestellt, wenn ihr Iteratortyp contiguous_iterator erfüllt(öffentliche Memberfunktion von std::ranges::view_interface<D>) | |
gibt das erste Element in der abgeleiteten View zurück, bereitgestellt, wenn sie forward_range erfüllt(öffentliche Member-Funktion von std::ranges::view_interface<D>) | |
gibt das letzte Element in der abgeleiteten View zurück, nur bereitgestellt, wenn sie bidirectional_range und common_range erfüllt(öffentliche Member-Funktion von std::ranges::view_interface<D>) | |
gibt das n-te Element in der abgeleiteten View zurück, nur bereitgestellt, wenn sie random_access_range erfüllt(öffentliche Member-Funktion von std::ranges::view_interface<D>) | |
std::ranges::as_const_view::as_const_view
| as_const_view() requires std::default_initializable<V> = default; |
(1) | (seit C++23) |
| constexpr explicit as_const_view( V base ); |
(2) | (seit C++23) |
base_ wertmäßig über seinen Standard-Member-Initialisierer (= V()).base_ mit std::move(base).Parameter
| base | - | eine Ansicht |
std::ranges::as_const_view::base
| constexpr V base() const& requires std::copy_constructible<V>; |
(1) | (seit C++23) |
| constexpr V base() &&; |
(2) | (seit C++23) |
Gibt die zugrunde liegende Ansicht zurück.
std::ranges::as_const_view::begin
| constexpr auto begin() requires (!__simple_view<V>); |
(1) | (seit C++23) |
| constexpr auto begin() const requires ranges::range<const V>; |
(2) | (seit C++23) |
Gibt den konstanten Iterator der Ansicht zurück.
std::ranges::as_const_view::end
| constexpr auto end() requires (!__simple_view<V>); |
(1) | (seit C++23) |
| constexpr auto end() const requires ranges::range<const V>; |
(2) | (seit C++23) |
Gibt den konstanten Sentinel der Ansicht zurück.
std::ranges::as_const_view::size
| constexpr auto size() requires ranges::sized_range<V>; |
(1) | (seit C++23) |
| constexpr auto size() const requires ranges::sized_range<const V>; |
(2) | (seit C++23) |
Gibt die Größe der Ansicht zurück, wenn die Ansicht beschränkt ist.
[edit] Deduktionsanleitungen
| template< class R > as_const_view( R&& ) -> as_const_view<views::all_t<R>>; |
(seit C++23) | |
[edit] Hilfsschablonen
| template< class T > constexpr bool enable_borrowed_range<std::ranges::as_const_view<T>> = |
(seit C++23) | |
Diese Spezialisierung von std::ranges::enable_borrowed_range lässt as_const_view borrowed_range erfüllen, wenn die zugrunde liegende Ansicht dies tut.
[edit] Hinweise
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_as_const |
202207L |
(C++23) | ranges::as_const_view, std::const_iterator |
[edit] Beispiel
#include <cassert> #include <ranges> int main() { int x[]{1, 2, 3, 4, 5}; auto v1 = x | std::views::drop(2); assert(v1.back() == 5); v1[0]++; // OK, can modify non-const element auto v2 = x | std::views::drop(2) | std::views::as_const; assert(v2.back() == 5); // v2[0]++; // Compile-time error, cannot modify read-only element }
[edit] Siehe auch
ein view einer Sequenz, der jedes Element in ein rvalue umwandelt(Klassen-Template) (Range-Adaptor-Objekt) | |
| (C++20) |
gibt einen Iterator zum Anfang eines schreibgeschützten Ranges zurück (Customization Point Objekt) |
| (C++20) |
gibt ein Sentinel zurück, das das Ende eines schreibgeschützten Ranges anzeigt (Customization Point Objekt) |
| (C++17) |
erhält eine Referenz auf const zu seinem Argument (Funktionsvorlage) |
| (C++23) |
Iterator-Adapter, der einen Iterator in einen konstanten Iterator umwandelt (Klassenvorlage) |