Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
constexpr bool empty()
    requires ranges::sized_range<D> || ranges::forward_range<D>;
(1) (desde C++20)
constexpr bool empty() const
    requires ranges::sized_range<const D> || ranges::forward_range<const D>;
(2) (desde C++20)

La implementación predeterminada de la función miembro empty() comprueba si el tamaño del objeto del tipo derivado es 0 (si es válido), o si el iterador de inicio y el centinela se comparan como iguales.

1) Sea derived una referencia vinculada 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).

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)