std::unique_lock<Mutex>:: operator=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
unique_lock::operator=
|
||||
| Locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
unique_lock
&
operator
=
(
unique_lock
&&
other
)
noexcept
;
|
(seit C++11) | |
Move-Zuweisungsoperator. Entspricht unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .
Wenn other dasselbe Objekt wie * this ist, gibt es keine Auswirkung. Andernfalls, falls vor dem Aufruf * this einen zugeordneten Mutex besitzt und dessen Eigentümerschaft erworben hat, wird der Mutex freigegeben.
Inhaltsverzeichnis |
Parameter
| other | - |
ein weiterer
unique_lock
zum Ersetzen des Zustands
|
Rückgabewert
* this
Hinweise
Bei einem rekursiven Mutex ist es möglich, dass sowohl * this als auch other denselben Mutex vor der Zuweisung besitzen. In diesem Fall wird * this den Mutex nach der Zuweisung besitzen und other nicht.
Die Verschiebungszuweisung kann undefiniertes Verhalten verursachen. Zum Beispiel, wenn * this mit std::adopt_lock konstruiert wurde, aber der aufrufende Thread nicht im Besitz des zugehörigen Mutex ist, kann der Besitz des zugehörigen Mutex nicht ordnungsgemäß freigegeben werden.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2104 | C++11 | der Move-Zuweisungsoperator war noexcept konnte aber undefiniertes Verhalten haben | noexcept entfernt |
| LWG 4172 | C++11 |
LWG2104
entfernte
noexcept
Selbst-Zuweisung von
unique_lock
war falsch spezifiziert
|
noexcept
wiederhergestellt
als No-Op neu spezifiziert |