std::indirect<T, Allocator>:: operator=
|
constexpr
indirect
&
operator
=
(
const
indirect
&
other
)
;
|
(1) | (depuis C++26) |
|
constexpr
indirect
&
operator
=
(
indirect
&&
other
)
noexcept
(
/* voir ci-dessous */
)
;
|
(2) | (depuis C++26) |
|
template
<
class
U
=
T
>
constexpr indirect & operator = ( U && value ) ; |
(3) | (depuis C++26) |
Remplace le contenu de * this par value ou par le contenu de other .
Soit
traits
égal à
std::
allocator_traits
<
Allocator
>
:
- Si other est sans valeur, * this devient sans valeur et l'objet détenu par * this (s'il existe) est détruit en utilisant traits :: destroy puis le stockage est désalloué.
-
Sinon, si
alloc== other.allocest true et * this n'est pas sans valeur, équivalent à ** this = * other . - Sinon :
-
-
Construit un nouvel objet détenu dans
*
this
en utilisant
traits
::
construct
avec
*
other
comme argument, en utilisant l'allocateur
update_alloc
?
other.
alloc:alloc. - L'objet précédemment détenu dans * this (s'il existe) est détruit en utilisant traits :: destroy puis le stockage est désalloué.
-
ppointe vers le nouvel objet détenu.
-
Construit un nouvel objet détenu dans
*
this
en utilisant
traits
::
construct
avec
*
other
comme argument, en utilisant l'allocateur
update_alloc
?
other.
alloc
est remplacé par une copie de
other.
alloc
.
- Si other est sans valeur, * this devient sans valeur et l'objet détenu par * this (s'il existe) est détruit en utilisant traits :: destroy puis le stockage est désalloué.
-
Sinon, si
alloc== other.allocest true , échange les objets détenus dans * this et other ; l'objet détenu dans other (s'il existe) est ensuite détruit en utilisant traits :: destroy puis le stockage est désalloué. - Sinon :
-
-
Construit un nouvel objet détenu dans
*
this
en utilisant
traits
::
construct
avec
std
::
move
(
*
other
)
comme argument, en utilisant l'allocateur
update_alloc
?
other.
alloc:alloc. - L'objet précédemment détenu dans * this (s'il existe) est détruit en utilisant traits :: destroy puis le stockage est désalloué.
-
ppointe vers le nouvel objet détenu.
-
Construit un nouvel objet détenu dans
*
this
en utilisant
traits
::
construct
avec
std
::
move
(
*
other
)
comme argument, en utilisant l'allocateur
update_alloc
?
other.
alloc
est remplacé par une copie de
other.
alloc
.
alloc
. Sinon, équivalent à
**
this
=
std::
forward
<
U
>
(
value
)
.
- std:: is_same_v < std:: remove_cvref_t < U > , std :: indirect > est false .
- std:: is_constructible_v < T, U > est true .
- std:: is_assignable_v < T & , U > est true .
Table des matières |
Paramètres
| autre | - |
un autre
indirect
objet dont la valeur possédée (si elle existe) est utilisée pour l'affectation
|
| valeur | - | valeur à affecter ou à construire pour la valeur possédée |
Valeur de retour
* this
Exceptions
T
, aucun effet.
T
, l'état de
this
-
>
p
est défini par la garantie de sûreté face aux exceptions de l'opérateur d'affectation par copie de
T
.
propagate_on_container_move_assignment
::
value
Exemple
|
Cette section est incomplète
Raison : aucun exemple |