std::experimental::optional<T>:: swap
From cppreference.net
<
cpp
|
experimental
|
optional
|
void
swap
(
optional
&
other
)
noexcept
(
/* see below */
)
;
|
(라이브러리 fundamentals TS) | |
내용을 other 와 교환합니다.
- 만약 * this 와 other 모두 값이 포함되어 있지 않다면, 함수는 아무런 효과도 가지지 않습니다.
-
만약
*
this
와
other
중 하나만 값을 포함하는 경우(이 객체를
in이라 하고 다른 객체를un이라 함),un의 포함된 값은 std :: move ( * in ) 로부터 직접 초기화 되며, 이어서in의 포함된 값은 in. val - > T :: ~T ( ) 에 의해 파괴됩니다. 이 호출 이후,in은 값을 포함하지 않고un은 값을 포함합니다.
-
만약
*
this
와
other
모두 값을 포함하고 있다면, 포함된 값들은
using
std::
swap
;
swap
(
**
this,
*
other
)
호출을 통해 교환됩니다.
Tlvalue는 Swappable 요구사항을 충족해야 합니다.
목차 |
매개변수
| other | - |
내용을 교환할
optional
객체
|
반환값
(없음)
예외
noexcept
명세:
noexcept
(
std::
is_nothrow_move_constructible
<
T
>
::
value
&&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )
예외가 발생한 경우,
*
this
와
other
의 포함된 값들의 상태는 호출되는
T
타입의
swap
또는
T
의 이동 생성자의 예외 안전성 보장에 의해 결정됩니다.
*
this
와
other
모두에 대해, 객체가 값을 포함하고 있었다면 값을 포함한 상태로 남게 되며, 그 반대의 경우도 마찬가지입니다.
참고 항목
|
std::swap
알고리즘을 특수화함
(함수) |