Namensräume
Varianten
Aktionen

std::ranges::view_interface<D>::empty

Von cppreference.com
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
constexpr bool empty()
    requires ranges::sized_range<D> || ranges::forward_range<D>;
(1) (seit C++20)
constexpr bool empty() const
    requires ranges::sized_range<const D> || ranges::forward_range<const D>;
(2) (seit C++20)

Die Standardimplementierung der Memberfunktion empty() prüft, ob die Größe des Objekts des abgeleiteten Typs 0 ist (falls gültig), oder ob der Anfangs-Iterator und das Sentinel gleich sind.

1) Sei derived eine Referenz, die an static_cast<D&>(*this) gebunden ist. Entspricht return ranges::size(derived) == 0;, wenn D sized_range erfüllt. Andernfalls entspricht es return ranges::begin(derived) == ranges::end(derived);.
2) Dasselbe wie (1), außer dass derived static_cast<const D&>(*this) ist.

Inhalt

[edit] Parameter

(keine)

[edit] Rückgabewert

true, wenn die Größe des Objekts des abgeleiteten Typs 0 ist (wenn D std::ranges::sized_range erfüllt), oder sein Anfangs-Iterator und das Sentinel gleich sind, false andernfalls.

[edit] Hinweise

Folgende abgeleitete Typen können die Standardimplementierung von empty verwenden:

(seit C++23)

Obwohl std::ranges::basic_istream_view von std::ranges::view_interface erbt und die Memberfunktion empty() nicht deklariert, kann sie die Standardimplementierung nicht verwenden, da sie weder std::ranges::sized_range noch std::ranges::forward_range erfüllt.

[edit] Beispiel

#include <array>
#include <ranges>
 
int main()
{
    constexpr std::array a{0, 1, 2, 3, 4};
    static_assert(!std::ranges::single_view(a).empty());
    static_assert((a | std::views::take(0)).empty());
    static_assert(!(a | std::views::take(5)).empty());
    static_assert((a | std::views::drop(5)).empty());
    static_assert(!(a | std::views::drop(3)).empty());
    static_assert(std::views::iota(0,0).empty());
    static_assert(!std::views::iota(0).empty());
}

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3715 C++20 empty() unterstützte nur forward_range-Typen sized_range-only Typen werden ebenfalls unterstützt

[edit] Siehe auch

(C++17)
prüft, ob der Container leer ist
(function template) [bearbeiten]
prüft, ob ein Range leer ist
(Customization Point Objekt)[edit]