std::ranges::subrange<I,S,K>::subrange
Depuis fr.cppreference.net
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>
requires /*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 )
requires (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 respectivement make-unsigned-like-t et different-from.
| Surcharge | Membres de données | ||
|---|---|---|---|
begin_
|
end_
|
size_(uniquement si StoreSize est true)
| |
| (1) | initialisé par valeur | initialisé par valeur | initialisé avec 0
|
| (2) | initialisé avec std::move(i)
|
initialisé avec s
|
S/O |
| (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
| ||
3) Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :
[i,s)n'est pas une plage valide.n ==to-unsigned-like(ranges::distance(i, s))estfalse.
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
|
Cette section est incomplète
Raison : aucun 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 |