std::ranges::view_interface<D>:: operator bool
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
operator bool
|
||||
|
constexpr
explicit
operator
bool
(
)
requires
/* ver más abajo */
;
|
(1) | (desde C++20) |
|
constexpr
explicit
operator
bool
(
)
const
requires
/* ver más abajo */
;
|
(2) | (desde C++20) |
La implementación por defecto de la función miembro operator bool verifica si la vista no está vacía. Hace que el tipo derivado sea contextualmente convertible a bool .
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
)
;
.
derived
es
static_cast
<
const
D
&
>
(
*
this
)
.
Contenidos |
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
|
(C++20)
|
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) |