Namespaces
Variants

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

Depuis fr.cppreference.net
 
 
Bibliothèque de plages
Adaptateurs de plages
 
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 renvoie 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 expression-equivalent à :
  • Convertir implicitement e en une std::decay_t<R> prvalue, si std::decay_t<R> modélise view.
  • Sinon, std::ranges::ref_view{e} si cette expression est bien formée.
  • Sinon, std::ranges::owning_view{e}.
2) Calcule le type de view approprié d'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)