std::indirect<T, Allocator>:: operator=
|
constexpr
indirect
&
operator
=
(
const
indirect
&
other
)
;
|
(1) | (seit C++26) |
|
constexpr
indirect
&
operator
=
(
indirect
&&
other
)
noexcept
(
/* siehe unten */
)
;
|
(2) | (seit C++26) |
|
template
<
class
U
=
T
>
constexpr indirect & operator = ( U && value ) ; |
(3) | (seit C++26) |
Ersetzt den Inhalt von * this durch value oder den Inhalt von other .
Sei
traits
gleich
std::
allocator_traits
<
Allocator
>
:
- Wenn other wertlos ist, wird * this wertlos und das von * this gehaltene Objekt (falls vorhanden) wird mittels traits :: destroy zerstört und anschließend der Speicher freigegeben.
-
Andernfalls, wenn
alloc== other.alloctrue ist und * this nicht wertlos ist, entspricht dies ** this = * other . - Andernfalls:
-
-
Konstruiert ein neues gehaltenes Objekt in
*
this
mittels
traits
::
construct
mit
*
other
als Argument, unter Verwendung des Allokators
update_alloc
?
other.
alloc:alloc. - Das zuvor in * this gehaltene Objekt (falls vorhanden) wird mittels traits :: destroy zerstört und anschließend der Speicher freigegeben.
-
pzeigt auf das neue gehaltene Objekt.
-
Konstruiert ein neues gehaltenes Objekt in
*
this
mittels
traits
::
construct
mit
*
other
als Argument, unter Verwendung des Allokators
update_alloc
?
other.
alloc
durch eine Kopie von
other.
alloc
ersetzt.
- Wenn other wertlos ist, wird * this wertlos und das von * this gehaltene Objekt (falls vorhanden) wird mittels traits :: destroy zerstört und anschließend der Speicher freigegeben.
-
Andernfalls, wenn
alloc== other.alloctrue ist, werden die gehaltenen Objekte in * this und other getauscht; das gehaltene Objekt in other (falls vorhanden) wird anschließend mittels traits :: destroy zerstört und der Speicher freigegeben. - Andernfalls:
-
-
Konstruiert ein neues gehaltenes Objekt in
*
this
mittels
traits
::
construct
mit
std
::
move
(
*
other
)
als Argument, unter Verwendung des Allokators
update_alloc
?
other.
alloc:alloc. - Das zuvor in * this gehaltene Objekt (falls vorhanden) wird mittels traits :: destroy zerstört und anschließend der Speicher freigegeben.
-
pzeigt auf das neue gehaltene Objekt.
-
Konstruiert ein neues gehaltenes Objekt in
*
this
mittels
traits
::
construct
mit
std
::
move
(
*
other
)
als Argument, unter Verwendung des Allokators
update_alloc
?
other.
alloc
durch eine Kopie von
other.
alloc
ersetzt.
alloc
. Andernfalls äquivalent zu
**
this
=
std::
forward
<
U
>
(
value
)
.
- std:: is_same_v < std:: remove_cvref_t < U > , std :: indirect > ist false .
- std:: is_constructible_v < T, U > ist true .
- std:: is_assignable_v < T & , U > ist true .
Inhaltsverzeichnis |
Parameter
| other | - |
ein weiteres
indirect
Objekt, dessen besessener Wert (falls vorhanden) für die Zuweisung verwendet wird
|
| value | - | Wert, der dem besessenen Wert zugewiesen oder für dessen Konstruktion verwendet wird |
Rückgabewert
* this
Exceptions
T
eine Exception ausgelöst wird, tritt keine Wirkung ein.
T
eine Exception ausgelöst wird, ist der Zustand von
this
-
>
p
durch die Exception-Safety-Garantie des Kopierzuweisungsoperators von
T
definiert.
propagate_on_container_move_assignment
::
value
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |