- Auto_ptr sera-t-il déconseillé dans le standard C++ entrant?
- Devrait-on utiliser unique_ptr pour le transfert de propriété au lieu de shared_ptr?
- Si single_ptr n'est pas dans la norme, ai-je besoin d'utiliser shared_ptr à la place?
Répondre
MISE À JOUR: Cette réponse a été écrite en 2010 et comme prévu std::auto_ptr
a été abandonnée. Le conseil est entièrement valide.
En C++ 0x std::auto_ptr
sera dépréciée en faveur de std::unique_ptr
. Le choix du pointeur intelligent dépend de votre cas d'utilisation et de vos besoins, avec std::unique_ptr
avec une sémantique de déplacement pour une propriété unique qui peut être utilisée à l'intérieur des conteneurs (en utilisant la sémantique de déplacement) et std::shared_ptr
lorsque la propriété est partagée.
Vous devriez essayer d'utiliser le pointeur intelligent qui correspond le mieux à la situation, choisir le bon type de pointeur fournit aux autres programmeurs un aperçu de votre conception.
Oui, à compter d'aujourd'hui auto_ptr
sera obsolète en C++ 0x et vous devrez utiliser unique_ptr
à la place. À partir du dernier projet de norme (n3035), section D.9
Le modèle de classe
auto_ptr
est obsolète. [Note: Le modèle de classeunique_ptr
(20.9.10) fournit une meilleure solution. -end note]
Jusqu'à ce que la norme soit ratifiée, il est toujours possible que le comité revoie cette décision bien que je pense que cela soit peu probable pour cette décision.
Non, ce n'est pas obsolète. Il se peut que C++ 0x soit accepté. Et il sera réaliste toujours soutenu. Je ne crois pas que toute fonctionnalité obsolète ait jamais été supprimée des implémentations C++ réelles.
Non seulement auto_ptr
est dépréciée in C++11 (D.10, page 1228), il sera également suppriméin a future version of C++:
Adopté N4190, et effectivement retiré (pas seulement désapprouvée) plusieurs choses archaïques de la bibliothèque standard C++, y compris
auto_ptr
,bind1st
/bind2nd
,ptr_fun
/mem_fun
/mem_fun_ref
,random_shuffle
et quelques autres. Ceux-ci sont maintenant tous supprimés de la bibliothèque standard du projet C++ 17 et ne feront pas partie du futur C++ portable.
Un autre document à ce sujet: Programming Language C++, Library Evolution Working Group - Document N4190, si vous voulez plus d'informations.
Vous pouvez convertir tout code à l'aide auto_ptr
automatiquement, à l'aide unique_ptr
à la place:
Tout code utilisant
auto_ptr
peut être converti mécaniquement à l'aide inséréunique_ptr
, avecmove()
chaque foisauto_ptr
était « copié ».
- 1. Est-ce que @Page {size: landscape} est obsolète?
- 2. -setStatusBarHidden: animé: est obsolète
- 3. Gtk.Style.Font est obsolète?
- 4. detectsPhoneNumbers est obsolète?
- 5. WSE2 est-il obsolète?
- 6. Hibernate est-il obsolète?
- 7. NUnit.Framework.Assert.IsInstanceOfType() est obsolète
- 8. setAllowsImageEditing est obsolète?
- 9. "Création d'un collecteur précompilé parce que collator est obsolète"
- 10. MSBuild ITaskItem tableau est obsolète
- 11. kCGColorSpaceGenericRGB est obsolète sur iPhone?
- 12. Rails 1.2 "service est obsolète"
- 13. JSTL taglib URI est obsolète?
- 14. NSDirectoryFileType est obsolète. Quel est le remplacement?
- 15. auto_ptr Pièges et pièges
- 16. auto_ptr avec swig
- 17. Qt et auto_ptr
- 18. question sur auto_ptr :: reset
- 19. copie locale de cette page est obsolète
- 20. svn: article <folder> est obsolète
- 21. La méthode Doctrine_Table :: find() est-elle obsolète?
- 22. Pourquoi IOC est obsolète selon MSDN?
- 23. HTTPContext est-il obsolète dans WCF?
- 24. raw_input() est obsolète dans python 3.1?
- 25. Xcode SVN Erreur: 160028 transaction est obsolète
- 26. Activer la compilation automatique lorsque F5 est pressé et que la source est obsolète
- 27. Pourquoi auto_ptr <T> l'opérateur!() Est-il défini?
- 28. std :: auto_ptr, supprime [] et fuit
- 29. Obsolète createEvenSource
- 30. Si NSString stringWithContentsOfFile est obsolète, quel est son remplacement?
+1 pour noter que les fonctionnalités désapprouvées sont retenues –
La norme C de mise à jour n'a été une fois, et qui était fondamentalement juste un rectificatif technique (à savoir fixé à des problèmes qui avaient été cités). Ce n'est pas surprenant que ça n'ait rien enlevé. OTOH, les anciennes fonctionnalités sont finalement abandonnées par les compilateurs. Juste par exemple, plus de C++ a probablement utilisé '' que jamais utilisé 'auto_ptr', mais MS VC++ (pour un) ne le fournit plus. –
@Jerry iostream.h n'a jamais fait partie d'aucune norme. Et en tant que tel, il n'est pas obsolète. –