C++ named requirements: LegacyBidirectionalIterator
LegacyBidirectionalIterator 는 양방향으로 이동(즉, 증가 및 감소)할 수 있는 LegacyForwardIterator 입니다.
만약
LegacyBidirectionalIterator
it
이
Container
에서 비롯된 경우,
it
의
value_type
은 컨테이너의 것과 동일하므로, 역참조(
*
it
)를 통해 컨테이너의
value_type
을 얻을 수 있습니다.
목차 |
요구사항
타입
It
는 다음 조건을 만족할 때
LegacyBidirectionalIterator
를 만족합니다
-
타입
It은 LegacyForwardIterator 를 만족합니다
그리고, 주어진
-
a
와
b
,
It타입의 lvalue -
reference, std:: iterator_traits < It > :: reference 로 표기된 타입
다음 표현식들은 유효해야 하며 지정된 효과를 가져야 합니다:
| 표현식 | 반환값 | 동등한 표현식 | 주의사항 |
|---|---|---|---|
| -- a |
It&
|
사전 조건:
사후 조건:
|
|
| a -- | const It & 로 변환 가능 |
It temp
=
a
;
--
a
;
|
|
| * a -- |
reference
|
mutable LegacyBidirectionalIterator 는 LegacyBidirectionalIterator 에 추가적으로 LegacyOutputIterator 요구 사항을 만족하는 반복자입니다.
참고 사항
begin 반복자는 감소 가능하지 않으며, -- container. begin ( ) 가 평가될 경우 동작은 정의되지 않습니다.
양방향 반복자는 역참조 가능하지 않아도 감소 가능할 수 있습니다(특히, 끝 반복자는 역참조 가능하지 않지만 감소 가능합니다).
Conceptstd::iterator_traits 의 정의를 위해 다음의 설명 전용(explanation-only) 개념이 정의됩니다.
여기서 설명 전용 개념
|
(C++20부터) |
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
|
LWG 299
( N3066 ) |
C++98 |
*
a
--
의 반환 타입이
T
로 변환 가능해야 했음
|
반환 타입을
reference
로 변경
[1]
|
| LWG 383 | C++98 | b 가 -- a 이후에 역참조 가능해야 했음 | a 가 역참조 가능해야 함 |
|
LWG 1212
( N3066 ) |
C++98 |
*
a
--
의 반환 타입이
LegacyForwardIterator 에서 요구하는 * a ++ 의 반환 타입과 일치하지 않았음 |
반환 타입을
reference
로 변경
|
참고 항목
|
(C++20)
|
forward_iterator
가 역방향 이동을 지원하는 양방향 반복자임을 명시함
(컨셉) |
| Iterator library | 반복자, 반복자 특성, 어댑터 및 유틸리티 함수에 대한 정의를 제공함 |