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
타입으로
암시적으로 변환 가능하지는 않음 |
변환을
명시적으로 수행하도록 수정 |