std::ranges::subrange<I,S,K>:: subrange
|
subrange
(
)
requires
std::
default_initializable
<
I
>
=
default
;
|
(1) | (C++20以降) |
|
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s
)
requires ( ! /*StoreSize*/ ) ; |
(2) | (C++20以降) |
|
constexpr
subrange
(
/*convertible-to-non-slicing*/
<
I
>
auto
i, S s,
/*make-unsigned-like-t*/
<
std::
iter_difference_t
<
I
>>
n
)
|
(3) | (C++20以降) |
|
template
<
/*different-from*/
<
subrange
>
R
>
requires
ranges::
borrowed_range
<
R
>
&&
|
(4) | (C++20以降) |
|
template
<
ranges::
borrowed_range
R
>
requires
/*convertible-to-non-slicing*/
<
ranges::
iterator_t
<
R
>
, I
>
&&
|
(5) | (C++20以降) |
subrange
を構築します。
/*make-unsigned-like-t*/
および
/*different-from*/
の定義については、それぞれ
make-unsigned-like-t
および
different-from
を参照してください。
| オーバーロード | データメンバ | ||
|---|---|---|---|
begin_
|
end_
|
size_
(
StoreSize
が
true
の場合のみ)
|
|
| (1) | 値初期化 | 値初期化 | 0 で初期化 |
| (2) | std :: move ( i ) で初期化 | s で初期化 | 該当なし |
| (3) | n で初期化 | ||
| (4) | std :: move ( ranges:: begin ( r ) ) で初期化 | ranges:: end ( r ) で初期化 |
static_cast
<
decltype
(
size_
)
>
(
ranges::
size
(
r
)
)
で初期化
|
| (5) | n で初期化 | ||
-
[i,s)が有効な範囲ではない。 -
n
==
to-unsigned-like ( ranges:: distance ( i, s ) ) が false である。
パラメータ
| i | - | 範囲の先頭を示すイテレータ |
| s | - | 範囲の終端を示すセンチネル |
| r | - | 範囲 |
| n | - | サイズヒント(範囲のサイズと等しくなければならない) |
例
|
このセクションは不完全です
理由:例がありません |
不具合報告
以下の動作変更欠陥報告書は、以前に公開されたC++標準に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P2393R1 | C++20 |
オーバーロード
(
4
)
について、
size_
は
ranges::
size
(
r
)
で初期化される可能性があるが、
対応する unsigned-integer-like 型に常に暗黙的に変換可能ではない |
変換を明示的に
行うように変更 |