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
/* 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 .
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
)
;
.
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
|
(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) |