Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
constexpr explicit operator bool ( ) requires /* voir ci-dessous */ ;
(1) (depuis C++20)
constexpr explicit operator bool ( ) const requires /* voir ci-dessous */ ;
(2) (depuis C++20)

L'implémentation par défaut de la fonction membre operator bool vérifie si la vue est non vide. Elle rend le type dérivé contextuellement convertible en bool .

1) Soit derived égal à static_cast < D & > ( * this ) . L'expression dans la clause requires est équivalente à requires { ranges:: empty ( derived ) ; } , et le corps de la fonction est équivalent à return ! ranges:: empty ( derived ) ; .
2) Identique à (1) , sauf que derived est static_cast < const D & > ( * this ) .

Table des matières

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

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)