std::ranges::subrange<I,S,K>:: subrange
|
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
)
|
(3) | (depuis C++20) |
|
template
<
/*different-from*/
<
subrange
>
R
>
requires
ranges::
borrowed_range
<
R
>
&&
|
(4) | (depuis C++20) |
|
template
<
ranges::
borrowed_range
R
>
nécessite
/*convertible-to-non-slicing*/
<
ranges::
iterator_t
<
R
>
, I
>
&&
|
(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 | ||
-
[i,s)n'est pas une plage valide. -
n
==
to-unsigned-like ( ranges:: distance ( i, s ) ) est false .
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 |