La bibliothèque standard C ++ 11 fournit-elle un utilitaire pour convertir de a std::shared_ptr
en std::unique_ptr
, ou vice versa? Cette opération est-elle sûre?
c++
c++11
shared-ptr
unique-ptr
Forsum postérieur
la source
la source
shared_ptr
.Réponses:
En bref, vous pouvez facilement et efficacement convertir un
std::unique_ptr
enstd::shared_ptr
mais vous ne pouvez pas le convertirstd::shared_ptr
enstd::unique_ptr
.Par exemple:
ou:
la source
std::unique_ptr
à astd::shared_ptr
.Étant donné unique_ptr u_ptr, créez shared_ptr s_ptr:
Il n'est pas pratique d'aller dans l'autre sens.
la source
std::shared_ptr<whatever> s_ptr(std::move(u_ptr));
std::shared_ptr<whatever> s_ptr{std::move(u_ptr)};
Deleter
stocké à l'intérieur duunique_ptr