Namespaces
Variants

std::experimental::unique_resource<R, D>:: operator=

From cppreference.net
unique_resource & operator = ( unique_resource && other )
noexcept ( /*see below*/ ) ;
(библиотека fundamentals TS v3)

Оператор перемещающего присваивания. Заменяет управляемый ресурс и удалитель на other .

Формально, пусть RS будет типом хранимого дескриптора ресурса:

  • Сначала вызывает reset ( ) для освобождения текущего ресурса, если таковой имеется.
  • Затем присваивает сохранённый дескриптор ресурса и удалитель из other . std::move применяется к сохранённому дескриптору ресурса или удалителю other , если std:: is_nothrow_move_assignable_v < RS > или std:: is_nothrow_move_assignable_v < D > равно true соответственно. Присваивание сохранённого дескриптора ресурса выполняется первым, если только std:: is_nothrow_move_assignable_v < D > не равно false и std:: is_nothrow_move_assignable_v < RS > равно true .
  • Наконец, устанавливает * this владельцем ресурса тогда и только тогда, когда other владел им до присваивания, а other лишается владения ресурсом.

Если std:: is_nothrow_move_assignable_v < RS > равно true , RS должен удовлетворять требованиям MoveAssignable ; иначе RS должен удовлетворять требованиям CopyAssignable . Если std:: is_nothrow_move_assignable_v < D > равно true , D должен удовлетворять требованиям MoveAssignable ; иначе D должен удовлетворять требованиям CopyAssignable . Невыполнение указанных требований приводит к неопределённому поведению.

Содержание

Параметры

other - ресурсная обёртка, откуда будет передано владение

Возвращаемое значение

* this

Исключения

Любое исключение, выброшенное в операции копирующего присваивания.

Примечания

Если копия члена вызывает исключение, этот механизм оставляет other нетронутым и * this в освобожденном состоянии.

Пример

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

освобождает или заменяет управляемый ресурс
(публичная функция-член)
присваивает unique_ptr
(публичная функция-член std::unique_ptr<T,Deleter> )