Namespaces
Variants

std::ranges::view_interface<D>:: operator bool

From cppreference.net
Ranges library
Range adaptors
constexpr explicit operator bool ( ) requires /* siehe unten */ ;
(1) (seit C++20)
constexpr explicit operator bool ( ) const requires /* siehe unten */ ;
(2) (seit C++20)

Die Standardimplementierung der operator bool Memberfunktion prüft, ob die View nicht leer ist. Sie macht den abgeleiteten Typ kontextuell konvertierbar zu bool .

1) Sei derived gleich static_cast < D & > ( * this ) . Der Ausdruck in der requires-Klausel entspricht requires { ranges:: empty ( derived ) ; } , und der Funktionsrumpf ist äquivalent zu return ! ranges:: empty ( derived ) ; .
2) Gleich wie (1) , außer dass derived static_cast < const D & > ( * this ) ist.

Inhaltsverzeichnis

Rückgabewert

false falls der Wert des abgeleiteten Typs leer ist (bestimmt durch std::ranges::empty ), true andernfalls.

Hinweise

In C++20 stellt kein von std::ranges::view_interface abgeleiteter Typ in der Standardbibliothek seinen eigenen operator bool bereit. Fast alle diese Typen verwenden die Standardimplementierung.

Eine bemerkenswerte Ausnahme ist std::ranges::basic_istream_view . Da ihr Iteratortyp niemals forward_iterator erfüllt, kann die View den geerbten operator bool nicht verwenden.

Beispiel

#include <array>
#include <iostream>
#include <ranges>
int main()
{
    const std::array ints {0, 1, 2, 3, 4};
    auto odds = ints | std::views::filter([](int i) { return 0 != i % 2; });
    auto negs = ints | std::views::filter([](int i) { return i < 0; });
    std::cout << std::boolalpha
              << "Has odd numbers: " << (!!odds) << ' ' << '\n'
              << "Has negative numbers: " << (!!negs) << ' ' << '\n';
}

Ausgabe:

Has odd numbers: true
Has negative numbers: false

Siehe auch

prüft, ob ein Bereich leer ist
(Customization Point Object)
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur wenn sie sized_range oder forward_range erfüllt
(öffentliche Elementfunktion)
(C++17)
prüft, ob der Container leer ist
(Funktionstemplate)