C++ named requirements: MoveAssignable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gibt an, dass eine Instanz des Typs von einem rvalue -Argument zugewiesen werden kann.
Anforderungen
Der Typ
T
erfüllt die Anforderungen von
MoveAssignable
wenn
Gegeben
-
t, ein modifizierbarer Lvalue-Ausdruck vom TypT, -
rv, ein Rvalue -Ausdruck vom TypT.
Die folgenden Ausdrücke müssen gültig sein und ihre spezifizierten Effekte haben.
| Expression | Return type | Return value | Post-conditions |
|---|---|---|---|
| t = rv |
T&
|
t
|
Wenn
t
und
rv
nicht auf dasselbe Objekt verweisen, entspricht der Wert von
t
dem Wert von
rv
vor der Zuweisung.
Der neue Wert von
|
Hinweise
Der Typ muss keinen
move assignment operator
implementieren, um diese Typanforderung zu erfüllen: Ein
copy assignment operator
, der seinen Parameter als Wert oder als
const Type&
annimmt, wird an ein Rvalue-Argument binden.
Wenn eine
MoveAssignable
-Klasse einen Move-Zuweisungsoperator implementiert, kann sie ebenfalls
Move-Semantik
implementieren, um den Umstand zu nutzen, dass der Wert von
rv
nach der Zuweisung nicht spezifiziert ist.
Siehe auch
|
(C++11)
(C++11)
(C++11)
|
prüft, ob ein Typ einen Move-Zuweisungsoperator hat
(Klassen-Template) |
|
(C++20)
|
spezifiziert, dass ein Typ von einem anderen Typ zuweisbar ist
(Konzept) |