Namespaces
Variants

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

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

La implementación predeterminada de la función miembro empty() verifica si el tamaño del objeto del tipo derivado es 0 (si es válido), o si el iterador inicial y el centinela son iguales al compararlos.

1) Sea derived una referencia ligada a static_cast < D & > ( * this ) . Equivalente a return ranges:: size ( derived ) == 0 ; si D satisface sized_range . De lo contrario, equivalente a return ranges:: begin ( derived ) == ranges:: end ( derived ) ; .
2) Igual que (1) , excepto que derived es static_cast < const D & > ( * this ) .

Contenidos

Valor de retorno

true si el tamaño del objeto del tipo derivado es 0 (si D satisface std::ranges::sized_range ), o su iterador inicial y el centinela son iguales, false en caso contrario.

Notas

Los siguientes tipos derivados pueden usar la implementación predeterminada de empty :

(desde C++23)
(desde C++26)

Aunque std::ranges::basic_istream_view hereda de std::ranges::view_interface y no declara la función miembro empty() , no puede utilizar la implementación por defecto, porque nunca satisface ni std::ranges::sized_range ni std::ranges::forward_range .

Ejemplo

#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());
}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3715 C++20 empty() solo soportaba tipos forward_range también se soportan tipos exclusivos de sized_range

Véase también

(C++17)
verifica si el contenedor está vacío
(plantilla de función)
verifica si un rango está vacío
(objeto de punto de personalización)