La seule différence entre boost::scoped_ptr<T>
et std::unique_ptr<T>
le fait que std::unique_ptr<T>
a une sémantique de déplacement alors que boost::scoped_ptr<T>
est juste un pointeur intelligent get/reset?
Non, mais c'est la différence la plus importante.
L'autre différence majeure est que unique_ptr
Peut avoir un objet destructeur avec lui, de la même manière que shared_ptr
. Contrairement à shared_ptr
, Le type destructeur fait partie du type de unique_ptr
(La façon dont les allocateurs font partie des types de conteneurs STL).
unique_ptr
possède un objet exclusivement. Il est non copiable mais prend en charge transfert de propriété. Il a été introduit en remplacement du _ désormais obsolète auto_ptr
.
scoped_ptr
est ni copiable ni mobile. C'est le choix préféré lorsque vous souhaitez vous assurer que les pointeurs sont supprimés lorsque vous sortez de la portée.