std::unique_lock<Mutex>:: operator=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
unique_lock::operator=
|
||||
| Locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
unique_lock
&
operator
=
(
unique_lock
&&
other
)
noexcept
;
|
(depuis C++11) | |
Opérateur d'affectation par déplacement. Équivalent à unique_lock { std :: move ( other ) } . swap ( * this ) ; return * this ; .
Si other est le même objet que * this , il n'y a aucun effet. Sinon, si avant l'appel * this a un mutex associé et en a acquis la propriété, le mutex est déverrouillé.
Table des matières |
Paramètres
| autre | - |
un autre
unique_lock
pour remplacer l'état
|
Valeur de retour
* this
Notes
Avec un mutex récursif, il est possible que * this et other possèdent le même mutex avant l'affectation. Dans ce cas, * this possédera le mutex après l'affectation et other ne le possédera pas.
L'assignation de déplacement peut potentiellement provoquer un comportement indéfini. Par exemple, lorsque * this est construit avec std::adopt_lock , mais que le thread appelant ne possède pas la propriété du mutex associé, la propriété du mutex associé ne peut pas être correctement libérée.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2104 | C++11 | l'opérateur de déplacement était noexcept mais pouvait avoir un comportement indéfini | noexcept supprimé |
| LWG 4172 | C++11 |
LWG2104
a supprimé
noexcept
l'auto-affectation par déplacement de
unique_lock
était incorrectement spécifiée
|
noexcept
restauré
respecificé comme no-op |