Est-ce que C++11 unique_ptr et shared_ptr en mesure de convertir le type de chacun?
Ne C++11 de la bibliothèque standard fournit aucune utilitaire pour convertir à partir d'un std::shared_ptr
à std::unique_ptr
, ou vice-versa? Est-ce un fonctionnement sécuritaire?
- Définir la "sécurité de fonctionnement" s'il vous plaît. Quel type de sécurité que vous recherchez? la durée de vie de gestion de la sécurité? La sécurité des threads?
- "STL" ne signifie pas que la bibliothèque standard. Le TSL n'a rien à voir avec
shared_ptr
. - Fil de sécurité signifierait que vous avez propriétaires utilisé dans différents threads, c'est à dire le nombre d'utilisations n'est pas 1.
- Je le savais. Mon point était de "sécurité" n'a pas été bien définis dans l'OP de la question, et qu'il avait besoin de préciser de quel type de "sécurité", il voulait dire qu'il y a plusieurs sortes.
Vous devez vous connecter pour publier un commentaire.
En bref, vous pouvez facilement et efficacement convertir un
std::unique_ptr
àstd::shared_ptr
mais vous ne pouvez pas convertirstd::shared_ptr
àstd::unique_ptr
.Par exemple:
ou:
Donné unique_ptr u_ptr, de créer des shared_ptr s_ptr:
Le contraire est impossible.
std::shared_ptr<whatever> s_ptr(std::move(u_ptr));
std::shared_ptr<whatever> s_ptr{std::move(u_ptr)};