Est-ce que unique_ptr garantit le stockage de nullptr après le déplacement ?
std::unique_ptr<int> p1{new int{23}};
std::unique_ptr<int> p2{std::move(p1)};
assert(!p1); // is this always true?
Est-ce que unique_ptr garantit le stockage de nullptr après le déplacement ?
std::unique_ptr<int> p1{new int{23}};
std::unique_ptr<int> p2{std::move(p1)};
assert(!p1); // is this always true?
Oui, vous pouvez le comparer à nullptr
après la move
et il est garanti que la comparaison est égale.
De §20.8.1/4 [unique.ptr]
En outre,
u
peut, sur demande, transférer la propriété à un autre pointeur uniqueu2
. Une fois ce transfert effectué, les conditions suivantes s'appliquent :
-u2.p
est égale à la valeur de lau.p
,
-u.p
est égal ànullptr
et
...
(le membre p
est décrite plus haut comme - un pointeur unique est un objet u
qui stocke un pointeur sur un second objet p
)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.