Namensräume
Varianten
Aktionen

std::ranges::views::empty, std::ranges::empty_view

Von cppreference.com
< cpp‎ | ranges
 
 
Bereichsbibliothek
Range-Adaptoren
 
Definiert in der Header-Datei <ranges>
template<class T>

    requires std::is_object_v<T>

class empty_view : public ranges::view_interface<empty_view<T>>
(1) (seit C++20)
namespace views {

    template<class T>
    constexpr empty_view<T> empty{};

}
(2) (seit C++20)
1) Eine Range-Factory, die eine view von keinen Elementen eines bestimmten Typs erzeugt.
2) Variablentemplate für empty_view.

Inhalt

[edit] Member-Funktionen

begin
[static]
gibt nullptr zurück
(öffentliche statische Memberfunktion)
end
[static]
gibt nullptr zurück
(öffentliche statische Memberfunktion)
data
[static]
gibt nullptr zurück
(öffentliche statische Memberfunktion)
size
[static]
gibt 0 zurück
(öffentliche statische Memberfunktion)
empty
[static]
gibt true zurück
(öffentliche statische Memberfunktion)
Geerbt von std::ranges::view_interface
(C++23)
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
(C++23)
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
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>) [edit]
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>) [edit]
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>) [edit]
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>) [edit]

std::ranges::empty_view::begin

static constexpr T* begin() noexcept { return nullptr; }
(seit C++20)

empty_view referenziert kein Element.

std::ranges::empty_view::end

static constexpr T* end() noexcept { return nullptr; }
(seit C++20)

empty_view referenziert kein Element.

std::ranges::empty_view::data

static constexpr T* data() noexcept { return nullptr; }
(seit C++20)

empty_view referenziert kein Element.

std::ranges::empty_view::size

static constexpr std::size_t size() noexcept { return 0; }
(seit C++20)

empty_view ist immer leer.

std::ranges::empty_view::empty

static constexpr bool empty() noexcept { return true; }
(seit C++20)

empty_view ist immer leer.

[edit] Hilfstemplates

template<class T>
constexpr bool ranges::enable_borrowed_range<ranges::empty_view<T>> = true;
(seit C++20)

Diese Spezialisierung von ranges::enable_borrowed_range lässt empty_view borrowed_range erfüllen.

[edit] Anmerkungen

Obwohl empty_view front, back und die Member-Funktion operator[] von view_interface erbt, führen Aufrufe dieser immer zu undefiniertem Verhalten, da eine empty_view immer leer ist.

Die geerbte Konvertierungsfunktion operator bool gibt immer false zurück.

[edit] Beispiel

#include <ranges>
 
int main()
{
    namespace ranges = std::ranges;
 
    ranges::empty_view<long> e;
    static_assert(ranges::empty(e)); // uses operator bool
    static_assert(0 == e.size());
    static_assert(nullptr == e.data());
    static_assert(nullptr == e.begin());
    static_assert(nullptr == e.end());
    static_assert(nullptr == e.cbegin());
    static_assert(nullptr == e.cend());
}

[edit] Siehe auch

(C++17)
ein Wrapper, der möglicherweise ein Objekt enthält oder auch nicht
(Klassenvorlage) [edit]
eine view, die ein einzelnes Element eines bestimmten Wertes enthält
(class template) (customization point object)[edit]
ein view, der alle Elemente eines range enthält
(Alias-Template) (Range-Adaptor-Objekt)[edit]
ein view der Elemente eines anderen range
(Klassen-Template) [edit]