std::ranges::view_interface<D>::operator bool
Von cppreference.com
< cpp | ranges | view interface
| 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
Führen Sie diesen Code aus
#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
| (C++20) |
prüft, ob ein Range leer ist (Customization Point Objekt) |
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur, wenn sie sized_range oder forward_range erfüllt(public member function) | |
| (C++17) |
prüft, ob der Container leer ist (function template) |