std::experimental::ranges:: advance
|
헤더에 정의됨
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* unspecified */
advance
=
/* unspecified */
;
|
(ranges TS)
(customization point object) |
|
|
호출 시그니처
|
||
|
template
<
Iterator I
>
constexpr void advance ( I & i, ranges :: difference_type_t < I > n ) ; |
(1) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr void advance ( I & i, S bound ) ; |
(2) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr ranges :: difference_type_t < I > advance ( I & i, ranges :: difference_type_t < I > n, S bound ) ; |
(3) | |
반복자 i 를 n 회만큼 진행시키거나, bound 에 도달할 때까지 진행하며, 먼저 도달하는 조건을 기준으로 동작합니다.
I
가
RandomAccessIterator
를 모델링하면,
i
+
=
n
와 동등합니다. 그렇지 않으면,
i
를
n
번 증가시킵니다 (만약
n
이 음수이면 감소시킵니다).
n
이 음수이고
I
가
BidirectionalIterator
를 모델링하지 않으면 동작은 정의되지 않습니다.
[
i
,
bound
)
가 범위를 나타내지 않을 경우, 동작은 정의되지 않습니다.
[
i
,
bound
)
는 범위를 나타내며; 만약
n
==
0
이면,
[
i
,
bound
)
또는
[
bound
,
i
)
가 범위를 나타내며; 만약
n
<
0
이면,
[
bound
,
i
)
가 범위를 나타내고,
I
와
S
는 동일한 타입이어야 하며,
I
는
BidirectionalIterator
를 모델링해야 합니다. 그렇지 않으면 동작은 정의되지 않습니다.
목차 |
커스터마이제이션 포인트 객체
이름
ranges::advance
는
사용자 정의 지점 객체
를 나타내며, 이는
함수 객체
로서
리터럴
Semiregular
클래스 타입(설명 목적으로
AdvanceT
로 표기)입니다.
AdvanceT
의 모든 인스턴스는 동일합니다. 따라서
ranges::advance
는 자유롭게 복사할 수 있으며 그 복사본들은 상호 교환적으로 사용될 수 있습니다.
주어진 타입 집합
Args...
에 대해,
std::
declval
<
Args
>
(
)
...
가 위의
ranges::advance
인자 요구사항을 충족한다면,
AdvanceT
는
ranges
::
Invocable
<
const
AdvanceT, Args...
>
를 만족합니다. 그렇지 않으면,
AdvanceT
의 함수 호출 연산자 중 어느 것도 오버로드 해결에 참여하지 않습니다.
ranges::advance
가 정의된 모든 번역 단위에서, 이것은 동일한 사용자 지정 지점 객체의 인스턴스를 참조합니다. (이는
일 정의 규칙
을 위반하지 않으면서 인라인 함수와 함수 템플릿 같은 것들에서 자유롭게 사용될 수 있음을 의미합니다.)
반환값
M
은
i
의 시작 위치부터 종료 위치까지의 거리이며, 종료 위치가 시작 위치보다 앞선 경우 음수입니다.
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
주어진 거리만큼 반복자를 전진시킴
(function template) |
|
|
반복자와 센티넬 사이의 거리, 또는 범위의 시작과 끝 사이의 거리를 반환
(function template) |
|
|
반복자를 증가시킴
(function template) |
|
|
반복자를 감소시킴
(function template) |