std::ranges::subrange<I,S,K>:: subrange
subrange
(
)
requires
std::
default_initializable
<
I
>
=
default
;
|
(1) | (since C++20) |
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s
)
requires ( ! /*StoreSize*/ ) ; |
(2) | (since C++20) |
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s,
/*make-unsigned-like-t*/
<
std::
iter_difference_t
<
I
>>
n
)
|
(3) | (since C++20) |
template
<
/*different-from*/
<
subrange
>
R
>
requires
ranges::
borrowed_range
<
R
>
&&
|
(4) | (since C++20) |
template
<
ranges::
borrowed_range
R
>
requires
/*convertible-to-non-slicing*/
<
ranges::
iterator_t
<
R
>
, I
>
&&
|
(5) | (since C++20) |
Constructs a
subrange
.
For the definitions of
/*make-unsigned-like-t*/
and
/*different-from*/
, see
make-unsigned-like-t
and
different-from
respectively.
Overload | Data members | ||
---|---|---|---|
begin_
|
end_
|
size_
(only if
StoreSize
is
true
)
|
|
(1) | value-initialized | value-initialized | initialized with 0 |
(2) | initialized with std :: move ( i ) | initialized with s | N/A |
(3) | initialized with n | ||
(4) | initialized with std :: move ( ranges:: begin ( r ) ) | initialized with ranges:: end ( r ) |
initialized with
static_cast
<
decltype
(
size_
)
>
(
ranges::
size
(
r
)
)
|
(5) | initialized with n |
-
[
i,
s)
is not a valid range. -
n
==
to-unsigned-like
( ranges:: distance ( i, s ) ) is false .
Parameters
i | - | iterator that denotes the beginning of the range |
s | - | sentinel that denotes the end of the range |
r | - | range |
n | - | size hint, must be equal to the size of the range |
Example
This section is incomplete
Reason: no example |
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
P2393R1 | C++20 |
for overload
(
4
)
,
size_
might be initialized with
ranges::
size
(
r
)
, but it is
not always implicitly convertible to the corresponding unsigned-integer-like type |
made the
conversion explicit |