Namespaces
Variants

std::ranges::views::as_input, std::ranges::as_input_view

Depuis fr.cppreference.net
 
 
Bibliothèque de plages
Adaptateurs de plage
 
 
Défini dans l'en-tête <ranges>
template< ranges::input_range V >
    requires ranges::view<V>
class as_input_view
    : public ranges::view_interface<as_input_view<V>>
(1) (depuis C++26)
namespace views {
    inline constexpr /* unspecified */ as_input = /* unspecified */;
}
(2) (depuis C++26)
Signature d'appel
template< ranges::viewable_range R >
    requires /* see below */
constexpr ranges::view auto as_input( R&& r );
(depuis C++26)
1) Un adaptateur de plage qui représente une vue d'une vue sous-jacente en tant que input_range uniquement et non en tant que common_range.
2) RangeAdaptorObject. Soit e une sous-expression, et soit T égal à decltype(e). Alors l'expression views::as_input(e) est équivalente à l'expression à :
  • views::all(e), si c'est une expression bien formée et si toutes les conditions ci-dessous sont true :
  • as_input_view{e} sinon.

Par conséquent, as_input_view ne modélise jamais de concepts de plage plus forts que input_range. En particulier, il ne modélise aucun de ceux-ci :

De plus, as_input_view ne modélise pas common_range. Cependant, il modélise borrowed_range, constant_range et sized_range lorsque la vue sous-jacente V modélise les concepts respectifs.

Membres de données

Membre Description
V base_ (privé) la vue sous-jacente
(objet membre d'exposition uniquement*)

Fonctions membres

construit un as_input_view
(fonction membre publique)
renvoie une copie de la vue sous-jacente (adaptée)
(fonction membre publique)
renvoie un itérateur vers le début
(fonction membre publique)
renvoie un itérateur ou une sentinelle vers la fin
(fonction membre publique)
renvoie le nombre d'éléments. Fournie uniquement si la plage sous-jacente (adaptée) satisfait sized_range.
(fonction membre publique)
Hérité de ranges::view_interface
renvoie si la vue dérivée est vide, fournie uniquement si elle satisfait sized_range ou forward_range
(fonction membre publique de std::ranges::view_interface<D>)
(C++23)
renvoie un itérateur constant vers le début de la plage
(fonction membre publique de std::ranges::view_interface<D>)
(C++23)
renvoie une sentinelle pour l'itérateur constant de la plage
(fonction membre publique de std::ranges::view_interface<D>)
renvoie si la vue dérivée n'est pas vide, fournie uniquement si ranges::empty lui est applicable
(fonction membre publique de std::ranges::view_interface<D>)
obtient l'adresse des données de la vue dérivée, fournie uniquement si son type d'itérateur satisfait contiguous_iterator
(fonction membre publique de std::ranges::view_interface<D>)
renvoie le premier élément de la vue dérivée, fournie si elle satisfait forward_range
(fonction membre publique de std::ranges::view_interface<D>)
renvoie le dernier élément de la vue dérivée, fournie uniquement si elle satisfait bidirectional_range et common_range
(fonction membre publique de std::ranges::view_interface<D>)
renvoie le niè élément de la vue dérivée, fournie uniquement si elle satisfait random_access_range
(fonction membre publique de std::ranges::view_interface<D>)

std::ranges::as_input_view::as_input_view

as_input_view() requires std::default_initializable<V> = default;
(1) (depuis C++26)
constexpr explicit as_input_view( V base );
(2) (depuis C++26)
1) Initialise par valeur base_ via son initialiseur de membre par défaut (= V()).
2) Initialise base_ avec std::move(base).

Paramètres

base - une vue

std::ranges::as_input_view::base

constexpr V base() const& requires std::copy_constructible<V>;
(1) (depuis C++26)
constexpr V base() &&;
(2) (depuis C++26)
1) Construit par copie le résultat à partir de la vue sous-jacente. Équivalent à return base_;.
2) Construit par déplacement le résultat à partir de la vue sous-jacente. Équivalent à return std::move(base_);.

std::ranges::as_input_view::begin

constexpr auto begin() requires (!__simple_view<V>);
(1) (depuis C++26)
constexpr auto begin() const requires ranges::range<const V>;
(2) (depuis C++26)
1) Équivalent à return /*iterator*/<false>(ranges::begin(base_));
2) Équivalent à return /*iterator*/<true>(ranges::begin(base_));

std::ranges::as_input_view::end

constexpr auto end() requires (!__simple_view<V>);
(1) (depuis C++26)
constexpr auto end() const requires ranges::range<const V>;
(2) (depuis C++26)
1,2) Équivalent à return ranges::end(base_);

std::ranges::as_input_view::size

constexpr auto size() requires ranges::sized_range<V>;
(1) (depuis C++26)
constexpr auto size() const requires ranges::sized_range<const V>;
(2) (depuis C++26)
1,2) Équivalent à return ranges::size(base_);

Guides de déduction

template< class R >
as_input_view( R&& ) -> as_input_view<views::all_t<R>>;
(depuis C++26)

Classes imbriquées

le type d'itérateur
(modèle de classe membre d'exposition uniquement*)

Modèles d'aide

template< class T >
constexpr bool enable_borrowed_range<std::ranges::as_input_view<T>> =
    ranges::enable_borrowed_range<T>;
(depuis C++26)

Cette spécialisation de std::ranges::enable_borrowed_range fait que as_input_view satisfait borrowed_range lorsque la vue sous-jacente le satisfait.

Notes

as_input_view peut être utile pour éviter la surcharge nécessaire pour fournir le support des opérations nécessaires à une plus grande force d'itérateur.

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_ranges_as_input 202502L (C++26) std::ranges::as_input_view

Exemple

Voir aussi

spécifie une plage dont le type d'itérateur satisfait input_iterator
(concept)
convertit une vue en une common_range
(modèle de classe) (objet adaptateur de plage)