Namespaces
Variants

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

Von de.cppreference.net
 
 
Ranges-Bibliothek
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 empty()-Elementfunktion überprüft, ob die Größe des Objekts des abgeleiteten Typs 0 ist (falls gültig), oder ob der Startiterator und der Sentinel gleich sind.

1) Sei derived eine Referenz, die an static_cast<D&>(*this) gebunden ist. Äquivalent zu return ranges::size(derived) == 0;, wenn D sized_range erfüllt. Andernfalls äquivalent zu return ranges::begin(derived) == ranges::end(derived);.
2) Wie bei (1), außer dass derived static_cast<const D&>(*this) ist.

Rückgabewert

true wenn die Größe des Objekts des abgeleiteten Typs ​ 0 ​ beträgt (falls D std::ranges::sized_range erfüllt), oder sein Startiterator und der Sentinel gleich verglichen werden, false andernfalls.

Hinweise

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

**Anmerkung:** Da alle Textinhalte innerhalb der ``-Tags (die als Code behandelt werden sollten) und `title`-Attribute (die C++-spezifische Begriffe enthalten) gemäß den Anweisungen nicht übersetzt werden sollen, bleibt der gesamte Inhalt unverändert. Die HTML-Struktur und Formatierung wurden vollständig beibehalten.
(seit C++23)
(seit C++26)

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

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());
}

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 3715 C++20 empty() unterstützte nur forward_range -Typen sized_range -nur Typen werden ebenfalls unterstützt

Siehe auch

(C++17)
prüft, ob der Container leer ist
(Funktions-Template)
prüft, ob ein Range leer ist
(Customization Point Object)