Namespaces
Variants

std::ranges::views::all, std::ranges::views::all_t

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
Definido en el encabezado <ranges>
inline constexpr /* unspecified */ all = /* unspecified */;
(1) (desde C++20)
template< ranges::viewable_range R >
using all_t = decltype(views::all(std::declval<R>()));
(2) (desde C++20)
1) Un RangeAdaptorObject (también un RangeAdaptorClosureObject) que devuelve un view que incluye todos los elementos de su argumento range.
Dada una expresión e de tipo R, la expresión views::all(e) es equivalente en expresión a:
  • Convirtiendo implícitamente e a un std::decay_t<R> prvalue, si std::decay_t<R> modela view.
  • De lo contrario, std::ranges::ref_view{e} si esa expresión está bien formada.
  • De lo contrario, std::ranges::owning_view{e}.
2) Calcula el tipo view adecuado de un tipo viewable_range.

Ejemplo

#include <iostream>
#include <ranges>
#include <type_traits>
#include <vector>
int main()
{
    std::vector<int> v{0, 1, 2, 3, 4, 5};
    for (int n : std::views::all(v) | std::views::take(2))
        std::cout << n << ' ';
    std::cout << '\n';
    static_assert(std::is_same<
        decltype(std::views::single(42)),
        std::ranges::single_view<int>
        >{});
    static_assert(std::is_same<
        decltype(std::views::all(v)),
        std::ranges::ref_view<std::vector<int, std::allocator<int>>>
        >{});
    int a[]{1, 2, 3, 4};
    static_assert(std::is_same<
        decltype(std::views::all(a)),
        std::ranges::ref_view<int[4]>
        >{});
    static_assert(std::is_same<
        decltype(std::ranges::subrange{std::begin(a) + 1, std::end(a) - 1}),
        std::ranges::subrange<int*, int*, std::ranges::subrange_kind(1)>
        >{});
}

Salida:

0 1

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 3724 C++20 views::all podría resultar en error grave para algunas vistas de solo movimiento queda bien restringido
P2415R2 C++20 views::all devolvía un subrange para un rvalue range que no es view devuelve un owning_view para ello

Véase también

una view vacía sin elementos
(plantilla de clase) (plantilla de variable)
una view que contiene un único elemento de un valor especificado
(plantilla de clase) (objeto de punto de personalización)
una view con propiedad única de algún range
(plantilla de clase)