Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
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 retorna una 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 expression-equivalent a:
2) Calcula el tipo de view adecuado para 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)