Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
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 Member-Funktion operator bool prüft, ob die View nicht leer ist. Sie macht den abgeleiteten Typ kontextbezogen 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.

Inhalt

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

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

[bearbeiten] Hinweise

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

Eine bemerkenswerte Ausnahme ist std::ranges::basic_istream_view. Da sein Iterator-Typ niemals forward_iterator erfüllt, kann die View die geerbte operator bool nicht verwenden.

[bearbeiten] 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

[bearbeiten] Siehe auch

prüft, ob ein Range leer ist
(Customization Point Objekt)[edit]
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur, wenn sie sized_range oder forward_range erfüllt
(public member function) [bearbeiten]
(C++17)
prüft, ob der Container leer ist
(function template) [bearbeiten]