std::ranges::views::as_input, std::ranges::as_input_view
Depuis fr.cppreference.net
| 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 sonttrue:Tmodélise input_range,Tne satisfait pas common_range, etTne satisfait pas forward_range.
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
| Cette section est incomplète Raison : pas d'exemple |
Voir aussi
(C++20) |
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) |