std::ranges::view_interface<D>:: empty
|
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.
D
satisface
sized_range
. De lo contrario, equivalente a
return
ranges::
begin
(
derived
)
==
ranges::
end
(
derived
)
;
.
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
:
- std::ranges::common_view
- std::ranges::drop_view
- std::ranges::drop_while_view
- std::ranges::elements_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::reverse_view
- std::ranges::single_view
- std::ranges::split_view
- std::ranges::take_view
- std::ranges::take_while_view
- std::ranges::transform_view
| (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) |
|
(C++20)
|
verifica si un rango está vacío
(objeto de punto de personalización) |