Namespaces
Variants

std::experimental::optional<T>:: swap

From cppreference.net
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 ) 호출을 통해 교환됩니다. T lvalue는 Swappable 요구사항을 충족해야 합니다.

목차

매개변수

other - 내용을 교환할 optional 객체

반환값

(없음)

예외

noexcept 명세:
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )

예외가 발생한 경우, * this other 의 포함된 값들의 상태는 호출되는 T 타입의 swap 또는 T 의 이동 생성자의 예외 안전성 보장에 의해 결정됩니다. * this other 모두에 대해, 객체가 값을 포함하고 있었다면 값을 포함한 상태로 남게 되며, 그 반대의 경우도 마찬가지입니다.

참고 항목

std::swap 알고리즘을 특수화함
(함수)