std::ranges::subrange<I,S,K>:: subrange
|
subrange
(
)
requires
std::
default_initializable
<
I
>
=
default
;
|
(1) | (seit C++20) |
|
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s
)
requires ( ! /*StoreSize*/ ) ; |
(2) | (seit C++20) |
|
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s,
/*make-unsigned-like-t*/
<
std::
iter_difference_t
<
I
>>
n
)
|
(3) | (seit C++20) |
|
template
<
/*different-from*/
<
subrange
>
R
>
requires
ranges::
borrowed_range
<
R
>
&&
|
(4) | (seit C++20) |
|
template
<
ranges::
borrowed_range
R
>
erfordert
/*convertible-to-non-slicing*/
<
ranges::
iterator_t
<
R
>
, I
>
&&
|
(5) | (seit C++20) |
Konstruiert einen
subrange
.
Für die Definitionen von
/*make-unsigned-like-t*/
und
/*different-from*/
, siehe
make-unsigned-like-t
und
different-from
beziehungsweise.
| Überladung | Datenmitglieder | ||
|---|---|---|---|
begin_
|
end_
|
size_
(nur wenn
StoreSize
true
ist)
|
|
| (1) | wertinitialisiert | wertinitialisiert | initialisiert mit 0 |
| (2) | initialisiert mit std :: move ( i ) | initialisiert mit s | N/A |
| (3) | initialisiert mit n | ||
| (4) | initialisiert mit std :: move ( ranges:: begin ( r ) ) | initialisiert mit ranges:: end ( r ) |
initialisiert mit
static_cast
<
decltype
(
size_
)
>
(
ranges::
size
(
r
)
)
|
| (5) | initialisiert mit n | ||
-
[i,s)ist kein gültiger Bereich. -
n
==
to-unsigned-like ( ranges:: distance ( i, s ) ) ist false .
Parameter
| i | - | Iterator, der den Anfang des Bereichs bezeichnet |
| s | - | Sentinel, der das Ende des Bereichs bezeichnet |
| r | - | Bereich |
| n | - | Größenhinweis, muss gleich der Größe des Bereichs sein |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| P2393R1 | C++20 |
für Überladung
(
4
)
,
size_
könnte mit
ranges::
size
(
r
)
initialisiert werden, aber es ist
nicht immer implizit konvertierbar zum entsprechenden unsigned-integer-like Typ |
die Konvertierung
explizit gemacht |