std::experimental::optional<T>:: operator=
|
optional
&
operator
=
(
std::
experimental
::
nullopt_t
)
noexcept
;
|
(1) | (Library Fundamentals TS) |
|
optional
&
operator
=
(
const
optional
&
other
)
;
|
(2) | (Library Fundamentals TS) |
|
optional
&
operator
=
(
optional
&&
other
)
noexcept
(
/* siehe unten */
)
;
|
(3) | (Library Fundamentals TS) |
|
template
<
class
U
>
optional & operator = ( U && value ) ; |
(4) | (Library Fundamentals TS) |
Ersetzt den Inhalt von * this durch den Inhalt von other .
- Wenn weder * this noch other einen Wert enthalten, hat die Funktion keine Auswirkung.
- Wenn * this einen Wert enthält, aber other nicht, dann wird der enthaltene Wert durch Aufruf seines Destruktors zerstört. * this enthält nach dem Aufruf keinen Wert.
- Wenn other einen Wert enthält, dann wird – abhängig davon, ob * this einen Wert enthält – der enthaltene Wert entweder direkt initialisiert oder zugewiesen von * other (2) oder std :: move ( * other ) (3) . Beachten Sie, dass ein verschobener optional weiterhin einen Wert enthält .
Inhaltsverzeichnis |
Parameter
| other | - |
ein weiteres
optional
-Objekt, dessen enthaltenen Wert zugewiesen werden soll
|
| value | - | Wert, der dem enthaltenen Wert zugewiesen werden soll |
| Typanforderungen | ||
-
T
muss die Anforderungen von
CopyAssignable
und
CopyConstructible
erfüllen, um Überladung (2) zu verwenden.
|
||
-
T
muss die Anforderungen von
MoveAssignable
und
MoveConstructible
erfüllen, um Überladung (3) zu verwenden.
|
||
Rückgabewert
* this
Exceptions
T
geworfen wird. Wenn eine Ausnahme geworfen wird, bleibt der Initialisierungszustand von
*
this
(und von
other
im Fall von (2)) unverändert, d.h. wenn das Objekt einen Wert enthielt, enthält es weiterhin einen Wert und umgekehrt. Der Inhalt von
value
und die enthaltenen Werte von
*
this
und
other
hängen von den Ausnahmesicherheitsgarantien der Operation ab, von der die Ausnahme stammt (Copy-Konstruktor, Move-Zuweisung, etc.).
(3) hat die folgende
noexcept
Deklaration:
Hinweise
Ein optionales Objekt
op
kann mit beiden Methoden in ein leeres Optional umgewandelt werden:
op
=
{
}
;
und
op
=
nullopt
;
.
Beispiel
#include <experimental/optional> #include <iostream> int main() { std::experimental::optional<const char*> s1 = "abc", s2; // Konstruktor s2 = s1; // Zuweisung s1 = "def"; // Zerfallende Zuweisung (U = char[4], T = const char*) std::cout << *s2 << ' ' << *s1 << '\n'; }
Ausgabe:
abc def
Siehe auch
|
Konstruiert den enthaltenen Wert direkt
(öffentliche Elementfunktion) |