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 | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| P2393R1 | C++20 |
对于重载版本
(
4
)
,
size_
可能使用
ranges::
size
(
r
)
初始化,但该值
并不总能隐式转换为对应的 unsigned-integer-like 类型 |
将转换
改为显式进行 |