std::polymorphic<T, Allocator>:: operator=
From cppreference.net
<
cpp
|
memory
|
polymorphic
|
constexpr
polymorphic
&
operator
=
(
const
polymorphic
&
other
)
;
|
(1) | (desde C++26) |
|
constexpr
polymorphic
&
operator
=
(
polymorphic
&&
other
)
noexcept ( /* ver más abajo */ ) ; |
(2) | (desde C++26) |
Reemplaza el contenido de * this con el contenido de other .
Sea
traits
como
std::
allocator_traits
<
Allocator
>
:
1)
Si
std::
addressof
(
other
)
==
this
es
true
, no hace nada. De lo contrario, sea
need_update
igual a
traits
::
propagate_on_container_copy_assignment
::
value
:
-
Si
other
no tiene valor, procede al siguiente paso. De lo contrario, construye un nuevo objeto poseído en
*
this
usando
traits
::
construct
con
*
other
como argumento, usando el asignador
update_alloc
?
other.
alloc:alloc. - El objeto previamente poseído en * this (si existe) es destruido usando traits :: destroy y luego la memoria es desasignada.
Después de actualizar el objeto propiedad de
*
this
, si
need_update
es
true
,
alloc
se reemplaza con una copia de
other.
alloc
.
2)
Si
std::
addressof
(
other
)
==
this
es
true
, no hace nada. De lo contrario, sea
need_update
igual a
traits
::
propagate_on_container_move_assignment
::
value
:
-
Si
alloc== other.alloces true , intercambia los objetos poseídos en * this y other ; el objeto poseído en other (si existe) es entonces destruido usando traits :: destroy y luego la memoria es desasignada. - De lo contrario:
-
-
Si
other
no tiene valor, procede al siguiente paso. De lo contrario, construye un nuevo objeto poseído en
*
this
usando
traits
::
construct
con
std
::
move
(
*
other
)
como argumento, usando el asignador
update_alloc
?
other.
alloc:alloc. - El objeto previamente poseído en * this (si existe) es destruido usando traits :: destroy y luego la memoria es desasignada.
-
Si
other
no tiene valor, procede al siguiente paso. De lo contrario, construye un nuevo objeto poseído en
*
this
usando
traits
::
construct
con
std
::
move
(
*
other
)
como argumento, usando el asignador
update_alloc
?
other.
Después de actualizar los objetos poseídos por
*
this
y
other
, si
need_update
es
true
,
alloc
se reemplaza con una copia de
other.
alloc
.
Si se satisfacen todas las siguientes condiciones, el programa está mal formado:
- std:: allocator_traits < Allocator > :: is_always_equal :: value es false .
-
Tes un tipo incompleto.
Contenidos |
Parámetros
| otro | - |
otro objeto
polymorphic
cuyo valor poseído (si existe) se utiliza para la asignación
|
Valor de retorno
* this
Excepciones
1)
Si se lanza alguna excepción, no hay efectos sobre
*
this
.
2)
Si se lanza alguna excepción, no hay efectos sobre
*
this
o
other
.
noexcept
especificación:
noexcept
(
std::
allocator_traits
<
Allocator
>
::
propagate_on_container_move_assignment
::
value
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |