Namespaces
Variants

std::ranges::view_interface<D>:: empty

From cppreference.net
Ranges library
Range adaptors
constexpr bool empty ( )
requires ranges:: sized_range < D > || ranges:: forward_range < D > ;
(1) (depuis C++20)
constexpr bool empty ( ) const
requires ranges:: sized_range < const D > || ranges:: forward_range < const D > ;
(2) (depuis C++20)

L'implémentation par défaut de la empty() fonction membre vérifie si la taille de l'objet du type dérivé est 0 (si valide), ou si l'itérateur de début et le sentinelle sont égaux.

1) Soit derived une référence liée à static_cast < D & > ( * this ) . Équivalent à return ranges:: size ( derived ) == 0 ; si D satisfait sized_range . Sinon, équivalent à return ranges:: begin ( derived ) == ranges:: end ( derived ) ; .
2) Identique à (1) , sauf que derived est static_cast < const D & > ( * this ) .

Table des matières

Valeur de retour

true si la taille de l'objet du type dérivé est 0 (si D satisfait std::ranges::sized_range ), ou si son itérateur de début et le sentinelle sont égaux, false sinon.

Notes

Les types dérivés suivants peuvent utiliser l'implémentation par défaut de empty :

(depuis C++23)
(depuis C++26)

Bien que std::ranges::basic_istream_view hérite de std::ranges::view_interface et ne déclare pas la fonction membre empty() , elle ne peut pas utiliser l'implémentation par défaut, car elle ne satisfait jamais ni std::ranges::sized_range ni std::ranges::forward_range .

Exemple

#include <array>
#include <ranges>
int main()
{
    constexpr std::array a{0, 1, 2, 3, 4};
    static_assert(!std::ranges::single_view(a).empty());
    static_assert((a | std::views::take(0)).empty());
    static_assert(!(a | std::views::take(5)).empty());
    static_assert((a | std::views::drop(5)).empty());
    static_assert(!(a | std::views::drop(3)).empty());
    static_assert(std::views::iota(0,0).empty());
    static_assert(!std::views::iota(0).empty());
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement publié Comportement corrigé
LWG 3715 C++20 empty() ne prenait en charge que les types forward_range Les types sized_range uniquement sont également pris en charge

Voir aussi

(C++17)
vérifie si le conteneur est vide
(modèle de fonction)
vérifie si une plage est vide
(objet de point de personnalisation)