Namespaces
Variants

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

Von de.cppreference.net
 
 
Ranges-Bibliothek
Range-Adaptoren
 
 
constexpr explicit operator bool() requires /* see below */;
(1) (seit C++20)
constexpr explicit operator bool() const requires /* see below */;
(2) (seit C++20)

Die Standardimplementierung der operator bool-Mitgliedsfunktion prüft, ob der View nicht leer ist. Sie macht den abgeleiteten Typ kontextuell in bool konvertierbar.

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

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)