Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
constexpr explicit operator bool() requires /* see below */;
(1) (desde C++20)
constexpr explicit operator bool() const requires /* see below */;
(2) (desde C++20)

La implementación predeterminada de la función miembro operator bool comprueba si la vista no está vacía. Hace que el tipo derivado sea contextualmente convertible a bool.

1) Sea derived igual a static_cast<D&>(*this). La expresión en la cláusula requires es igual a requires { ranges::empty(derived); }, y el cuerpo de la función es equivalente a return !ranges::empty(derived);.
2) Igual que (1), excepto que derived es static_cast<const D&>(*this).

Valor de retorno

false si el valor del tipo derivado está vacío (determinado por std::ranges::empty ), true en caso contrario.

Notas

En C++20, ningún tipo derivado de std::ranges::view_interface en la biblioteca estándar proporciona su propio operator bool . Casi todos estos tipos utilizan la implementación por defecto.

Una excepción notable es std::ranges::basic_istream_view . Dado que su tipo iterador nunca satisface forward_iterator , la vista no puede utilizar el operator bool heredado.

Ejemplo

#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';
}

Salida:

Has odd numbers: true
Has negative numbers: false

Véase también

verifica si un rango está vacío
(objeto de punto de personalización)
retorna si la vista derivada está vacía, proporcionado solo si satisface sized_range o forward_range
(función miembro pública)
(C++17)
verifica si el contenedor está vacío
(plantilla de función)