Recientemente comencé a apreciar std::auto_ptr
y ahora leo que será deprecated. He empezado a utilizar para dos situaciones:¿Debo dejar de usar auto_ptr?
- valor de retorno de una fábrica
- Comunicar transferencia de la propiedad
Ejemplos:
// Exception safe and makes it clear that the caller has ownership.
std::auto_ptr<Component> ComponentFactory::Create() { ... }
// The receiving method/function takes ownership of the pointer. Zero ambiguity.
void setValue(std::auto_ptr<Value> inValue);
A pesar de la semántica de copia problemáticas encuentro auto_ptr
útil. Y no parece haber una alternativa para los ejemplos anteriores.
¿Debería seguir usándolo y luego cambiar a std::unique_ptr
? ¿O se debe evitar?
Yo diría que sigas con 'auto_ptr' para cualquier proyecto en el que estés trabajando, y cambias siempre que comiences algo nuevo, para que no estés creando complejidad mezclándolos. (Supongo que el (los) compilador (es) que usa el soporte 'unique_ptr'.) –
' std :: auto_ptr' se está desaprobando no porque no sea útil, sino porque 'std :: unique_ptr' hace todo lo que hace, simplemente mejor. Entonces, ya sea que cambie a 'std :: unique_ptr' o no, no hay razón para dejar de usar' std :: auto_ptr'. –
Eric Lippert escribió sobre esto hace mucho tiempo. Es una lectura interesante: http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/53016.aspx –