- ¿Auto_ptr quedará obsoleto en el estándar entrante de C++?
- ¿Debería unique_ptr utilizarse para la transferencia de propiedad en lugar de shared_ptr?
- Si unique_ptr no está en el estándar, ¿necesito usar shared_ptr en su lugar?
Respuesta
ACTUALIZACIÓN: Esta respuesta se escribió en 2010 y, como se anticipó, std::auto_ptr
ha quedado obsoleta. El consejo es completamente válido.
En C++ 0x std::auto_ptr
se desaprobará en favor de std::unique_ptr
. La elección del puntero inteligente dependerá de su caso de uso y sus requisitos, con std::unique_ptr
con semántica de movimiento para propiedad individual que se puede usar dentro de contenedores (usando la semántica de movimiento) y std::shared_ptr
cuando se comparte la propiedad.
Debe intentar utilizar el puntero inteligente que mejor se adapte a la situación, elegir el tipo de puntero correcto proporciona a otros programadores una idea de su diseño.
Sí, a partir de hoy auto_ptr
quedarán obsoletos en C++ 0x y en su lugar debería usar unique_ptr
. Desde el último borrador de estándar (n3035), sección D.9
La plantilla de clase
auto_ptr
está obsoleta. [Nota: la plantilla de claseunique_ptr
(20.9.10) proporciona una mejor solución. -finalizar]
Hasta que se ratifique el estándar, siempre es posible que el comité revise esta decisión, aunque creo que es poco probable para esta decisión.
No, no está en desuso. Puede ser, si alguna vez se acepta C++ 0x. Y, de manera realista, siempre será compatible. No creo que alguna característica en desuso nunca haya sido eliminada de las implementaciones de C++ en el mundo real.
No sólo auto_ptr
es obsoleto in C++11 (D.10, page 1228), también será suprimenin a future version of C++:
Adoptado N4190, y en realidad eliminado (no sólo no se use) varias cosas arcaicas de la biblioteca de C++ estándar, incluyendo
auto_ptr
,bind1st
/bind2nd
,ptr_fun
/mem_fun
/mem_fun_ref
,random_shuffle
, y algunos más. Esos ahora son eliminados del borrador de la biblioteca estándar de C++ 17 y no serán parte del futuro C++ portátil.
Otro documento al respecto: Programming Language C++, Library Evolution Working Group - Document N4190, si desea más información.
puede convertir cualquier código usando auto_ptr
de forma automática, mediante el uso de unique_ptr
lugar:
Cualquier código usando
auto_ptr
se puede convertir mecánicamente usandounique_ptr
, conmove()
insertada cada vezauto_ptr
estaba siendo "copiado".
- 1. StringBuffer está obsoleto?
- 2. ¿Hash Rocket está obsoleto?
- 3. ¿LDAP está obsoleto?
- 4. ¿MSMQ está obsoleto?
- 5. ¿Por qué auto_ptr está en desuso?
- 6. ¿Por qué está/Wp64 obsoleto?
- 7. ¿Está JavaServer Faces 1.2 obsoleto?
- 8. ¿Boost :: make_shared está obsoleto ahora?
- 9. ¿Está @Page {size: landscape} obsoleto?
- 10. ¿Está os.popen realmente obsoleto en Python 2.6?
- 11. ¿El formato de texto enriquecido está obsoleto?
- 12. ¿El patrón DAO está obsoleto en Scala?
- 13. Dejar ir auto_ptr
- 14. C++: ¿auto_ptr + forward declaration?
- 15. auto_ptr para matrices
- 16. auto_ptr Traps and Pitfalls
- 17. HTML obsoleto frente a obsoleto
- 18. significado obsoleto?
- 19. File.toURL() obsoleto?
- 20. stringWithContentsOfFile Obsoleto
- 21. Reemplazando auto_ptr en VC++ 8
- 22. glEnableClientState obsoleto
- 23. Enum.ToString() obsoleto?
- 24. initWithContentsOfFile Obsoleto
- 25. ¿Debo dejar de usar auto_ptr?
- 26. std :: auto_ptr, delete [] y fugas
- 27. Punteros vs auto_ptr vs shared_ptr
- 28. ¿El URI de taglib de JSTL está obsoleto?
- 29. advertencia: Time # succ está obsoleto; use time + 1
- 30. NSString cString está obsoleto. ¿Cuál es la alternativa?
1 para señalar que Características en desuso se retienen –
estándar El C++ sólo se ha actualizado una vez, y que era básicamente sólo una corrección de errores técnica (es decir, fijado a problemas que habían sido citados). No es sorprendente que no haya eliminado nada. OTOH, las características antiguas finalmente se eliminan de los compiladores. Solo por ejemplo, más C++ probablemente usó '' que nunca antes utilizado 'auto_ptr', pero MS VC++ (para uno) ya no lo proporciona. –
@Jerry iostream.h nunca ha sido parte de ningún estándar. Y como tal, no está en desuso. –