Pregunta

En algún lugar de mi código tengo un local std::unique_ptr<T>. Necesito hacer cosas con el objeto apuntado, y uso una función para eso:

std::unique_ptr<T> some_function( std::unique_ptr<T> &t )
{
    // do stuff
    return t;
}

Llamo a la función así:

std::unique_ptr<T> some_T_ptr( new T(/*args*/) );
vector_of_finalized_Ts.push_back( std::move(some_function(std::move(some_T_ptr))));

Ahora me pregunto, ¿hay una mejor manera de obtener la funcionalidad necesaria? Parece que dos movimientos son bastante superfluos y potencialmente peligrosos. Tengo un código de manejo de errores que no estoy mostrando aquí, pero eso no viene al caso.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top