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 определяются гарантиями безопасности исключений функции swap для типа T или move-конструктора T , в зависимости от того, что вызывается. Как для * this , так и для other , если объект содержал значение, он остается содержащим значение, и наоборот.

Смотрите также

специализирует алгоритм std::swap
(функция)