std::experimental::unique_resource<R, D>:: operator=
|
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>
)
|