std::indirect<T, Allocator>:: operator=
|
constexpr
indirect
&
operator
=
(
const
indirect
&
other
)
;
|
(1) | (начиная с C++26) |
|
constexpr
indirect
&
operator
=
(
indirect
&&
other
)
noexcept
(
/* см. ниже */
)
;
|
(2) | (начиная с C++26) |
|
template
<
class
U
=
T
>
constexpr indirect & operator = ( U && value ) ; |
(3) | (начиная с C++26) |
Заменяет содержимое * this на value или содержимое other .
Пусть
traits
будет
std::
allocator_traits
<
Allocator
>
:
- Если other не содержит значения, * this становится не содержащим значения и объект, принадлежащий * this (если есть), уничтожается с использованием traits :: destroy , после чего память освобождается.
-
Иначе, если
alloc== other.allocравно true и * this не является не содержащим значения, эквивалентно ** this = * other . - Иначе:
-
-
Создает новый принадлежащий объект в
*
this
с использованием
traits
::
construct
с
*
other
в качестве аргумента, используя аллокатор
update_alloc
?
other.
alloc:alloc. - Предыдущий принадлежащий объект в * this (если есть) уничтожается с использованием traits :: destroy , после чего память освобождается.
-
pуказывает на новый принадлежащий объект.
-
Создает новый принадлежащий объект в
*
this
с использованием
traits
::
construct
с
*
other
в качестве аргумента, используя аллокатор
update_alloc
?
other.
alloc
заменяется копией
other.
alloc
.
- Если other не содержит значения, * this становится не содержащим значения, и объект, принадлежащий * this (если есть), уничтожается с использованием traits :: destroy , после чего память освобождается.
-
Иначе, если
alloc== other.allocравно true , обменивает принадлежащие объекты в * this и other ; принадлежащий объект в other (если есть) затем уничтожается с использованием traits :: destroy , после чего память освобождается. - Иначе:
-
-
Создает новый принадлежащий объект в
*
this
с использованием
traits
::
construct
с аргументом
std
::
move
(
*
other
)
, используя аллокатор
update_alloc
?
other.
alloc:alloc. - Предыдущий принадлежащий объект в * this (если есть) уничтожается с использованием traits :: destroy , после чего память освобождается.
-
pуказывает на новый принадлежащий объект.
-
Создает новый принадлежащий объект в
*
this
с использованием
traits
::
construct
с аргументом
std
::
move
(
*
other
)
, используя аллокатор
update_alloc
?
other.
alloc
заменяется копией
other.
alloc
.
alloc
. Иначе эквивалентно
**
this
=
std::
forward
<
U
>
(
value
)
.
- std:: is_same_v < std:: remove_cvref_t < U > , std :: indirect > равно false .
- std:: is_constructible_v < T, U > равно true .
- std:: is_assignable_v < T & , U > равно true .
Содержание |
Параметры
| other | - |
другой
indirect
объект, чьё управляемое значение (если существует) используется для присваивания
|
| value | - | значение для присваивания или конструирования управляемого значения |
Возвращаемое значение
* this
Исключения
T
возникает исключение, эффекта нет.
T
возникает исключение, состояние
this
-
>
p
определяется гарантиями безопасности исключений оператора присваивания копированием для
T
.
propagate_on_container_move_assignment
::
value
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |