std::ranges::view_interface<D>::operator bool
constexpr explicit operator bool() requires /* see below */;
|
(1) | (depuis C++20) |
constexpr explicit operator bool() const requires /* see below */;
|
(2) | (depuis C++20) |
L'implémentation par défaut de la fonction membre operator bool vérifie si la vue n'est pas vide. Elle rend le type dérivé contextuellement convertible en bool.
derived égal à static_cast<D&>(*this). L'expression dans la clause requires est égale à requires { ranges::empty(derived); }, et le corps de la fonction est équivalent à return !ranges::empty(derived);.derived est static_cast<const D&>(*this).Valeur de retour
false si la valeur du type dérivé est vide (déterminée par std::ranges::empty ), true sinon.
Notes
En C++20, aucun type dérivé de std::ranges::view_interface dans la bibliothèque standard ne fournit son propre operator bool . Presque tous ces types utilisent l'implémentation par défaut.
Une exception notable est
std::ranges::basic_istream_view
. Comme son type d'itérateur ne satisfait jamais
forward_iterator
, la vue ne peut pas utiliser l'
operator
bool
hérité.
Exemple
#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'; }
Sortie :
Has odd numbers: true Has negative numbers: false
Voir aussi
|
(C++20)
|
vérifie si une plage est vide
(objet de point de personnalisation) |
renvoie si la vue dérivée est vide, fourni uniquement si elle satisfait
sized_range
ou
forward_range
(fonction membre publique) |
|
|
(C++17)
|
vérifie si le conteneur est vide
(fonction template) |