Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
Défini dans l'en-tête <ranges>
inline constexpr /* unspecified */ all = /* unspecified */ ;
(1) (depuis C++20)
template < ranges:: viewable_range R >
using all_t = decltype ( views :: all ( std:: declval < R > ( ) ) ) ;
(2) (depuis C++20)
1) Un RangeAdaptorObject (également un RangeAdaptorClosureObject ) qui retourne une view qui inclut tous les éléments de son argument range .
Étant donné une expression e de type R , l'expression views :: all ( e ) est équivalente en expression à :
2) Calcule le type de view approprié pour un type viewable_range .

Exemple

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

Sortie :

0 1

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3724 C++20 views::all pouvait entraîner une erreur grave pour certaines vues non copiables devient correctement contraint
P2415R2 C++20 views::all renvoyait un subrange pour une range rvalue non- view renvoie un owning_view pour celle-ci

Voir aussi

une view vide sans éléments
(modèle de classe) (modèle de variable)
une view qui contient un seul élément d'une valeur spécifiée
(modèle de classe) (objet point de personnalisation)
une view avec propriété exclusive d'une range
(modèle de classe)