std::ranges:: iter_swap
|
헤더 파일에 정의됨
<iterator>
|
||
|
namespace
ranges
{
inline
namespace
/* unspecified */
{
|
(C++20부터)
(커스터마이제이션 포인트 객체) |
|
|
호출 시그니처
|
||
|
template
<
class
I1,
class
I2
>
constexpr void iter_swap ( I1 && i1, I2 && i2 ) noexcept ( /* see below */ ) ; |
(C++20부터) | |
|
헬퍼 함수
|
||
|
template
<
class
X,
class
Y
>
constexpr
std::
iter_value_t
<
X
>
|
( (설명 전용*) ) | |
두 반복자가 가리키는 값을 교환합니다.
설명 전용 헬퍼 함수
iter-exchange-move
의 효과는 다음과 동일합니다.
std::iter_value_t<X> old(std::ranges::iter_move(x)); *x = std::ranges::iter_move(y); return old;
ranges :: iter_swap ( i1, i2 ) 는 다음 표현과 표현적 동등 입니다:
-
(
void
)
iter_swap
(
i1, i2
)
, 만약
i1
또는
i2
가 클래스나 열거형 타입을 가지고 표현식이 잘 구성된 경우, 여기서
iter_swap의 오버로드 해결 은 추가 후보 void iter_swap ( auto , auto ) = delete ; [1] 를 사용하여 수행되며,std::ranges::iter_swap자체는 제외됩니다.- 선택된 오버로드가 i1 과 i2 이 나타내는 값을 교환하지 않으면, 프로그램은 형식 오류이며 진단이 필요하지 않습니다.
-
그렇지 않으면,
ranges::
swap
(
*
i1,
*
i2
)
, 만약
I1과I2모두indirectly_readable을 모델링하고, std:: iter_reference_t < I1 > 과 std:: iter_reference_t < I2 > 이swappable_with을 모델링하는 경우. -
그렇지 않으면,
(
void
)
(
*
i1
=
iter-exchange-move( i2, i1 ) ) , 만약 std:: indirectly_movable_storable < I1, I2 > 과 std:: indirectly_movable_storable < I2, I1 > 이 모두 모델링되는 경우, 단 i1 은 한 번만 평가됩니다. - 그렇지 않으면, ranges :: iter_swap ( i1, i2 ) 은 형식 오류이며, 이는 ranges :: iter_swap ( i1, i2 ) 이 템플릿 인스턴스화의 직접적 문맥에 나타날 때 치환 실패 를 초래할 수 있습니다.
- ↑ 이는 제약 없는 std::iter_swap 호출을 배제합니다.
커스터마이제이션 포인트 객체
ranges::iter_swap
이름은
사용자 지정 지점 객체
를 나타내며, 이는 리터럴
semiregular
클래스 타입의 const
함수 객체
입니다. 자세한 내용은
CustomizationPointObject
를 참조하십시오.
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
(C++20)
|
조정된 기본 반복자가 가리키는 객체들을 교환합니다
(함수 템플릿) |
|
(C++20)
|
기본 반복자가 가리키는 객체들을 교환합니다
(함수 템플릿) |
|
두 반복자가 가리키는 요소들을 교환합니다
(함수 템플릿) |