Namespaces
Variants

std::ranges::subrange<I,S,K>:: subrange

From cppreference.net
Ranges library
Range adaptors
subrange ( ) requires std:: default_initializable < I > = default ;
(1) (depuis C++20)
constexpr subrange ( /*convertible-to-non-slicing*/ < I > auto i, S s )
requires ( ! /*StoreSize*/ ) ;
(2) (depuis C++20)
constexpr subrange ( /*convertible-to-non-slicing*/ < I > auto i, S s,

/*make-unsigned-like-t*/ < std:: iter_difference_t < I >> n )

requires ( K == ranges :: subrange_kind :: sized ) ;
(3) (depuis C++20)
template < /*different-from*/ < subrange > R >

requires ranges:: borrowed_range < R > &&
/*convertible-to-non-slicing*/ < ranges:: iterator_t < R > , I > &&
std:: convertible_to < ranges:: sentinel_t < R > , S >
constexpr subrange ( R && r )

requires ( ! /*StoreSize*/ || ranges:: sized_range < R > ) ;
(4) (depuis C++20)
template < ranges:: borrowed_range R >

nécessite /*convertible-to-non-slicing*/ < ranges:: iterator_t < R > , I > &&
std:: convertible_to < ranges:: sentinel_t < R > , S >
constexpr subrange ( R && r,
/*make-unsigned-like-t*/ < std:: iter_difference_t < I >> n )
nécessite ( K == ranges :: subrange_kind :: sized )

: subrange { ranges:: begin ( r ) , ranges:: end ( r ) , n } { }
(5) (depuis C++20)

Construit un subrange .

Pour les définitions de /*make-unsigned-like-t*/ et /*different-from*/ , voir make-unsigned-like-t et different-from respectivement.

Surcharge Membres de données
begin_ end_ size_
(seulement si StoreSize est true )
(1) initialisé par valeur initialisé par valeur initialisé avec 0
(2) initialisé avec std :: move ( i ) initialisé avec s N/A
(3) initialisé avec n
(4) initialisé avec std :: move ( ranges:: begin ( r ) ) initialisé avec ranges:: end ( r ) initialisé avec static_cast < decltype ( size_  ) >
( ranges:: size ( r ) )
(5) initialisé avec n
2) Si [ i , s ) n'est pas une plage valide , le comportement est indéfini.
3) Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :

Paramètres

i - itérateur qui désigne le début de la plage
s - sentinelle qui désigne la fin de la plage
r - plage
n - indication de taille, doit être égale à la taille de la plage

Exemple

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 S'applique à Comportement publié Comportement corrigé
P2393R1 C++20 pour la surcharge ( 4 ) , size_ pourrait être initialisé avec ranges:: size ( r ) , mais il n'est
pas toujours implicitement convertible vers le type unsigned-integer-like correspondant
rendu la
conversion explicite