2012-07-09 18 views
6

veo dos soluciones razonables para el problema de un miembro de la toma de posesión de un parámetro:miembro de la toma de posesión del parámetro

Foo::Foo(std::unique_ptr<int> parameter) 
: member(std::move(parameter)) 
{ 
} 

Bar::Bar(std::unique_ptr<int> parameter) 
{ 
    member.swap(parameter); 
} 

¿Cuál de estos es más idiomática, más fácil de entender, fácil de depurar, más fácil de mantener ¿etc.?

¿Hay soluciones adicionales al problema que me he perdido?

Respuesta

12

Siempre a favor de la lista de inicializadores. Además, cubre los tipos que se pueden mover pero no intercambiar, por ejemplo, o los tipos que pueden tener que realizar operaciones costosas para la construcción predeterminada, o de hecho, tipos que simplemente no pueden construirse por defecto.

Cuestiones relacionadas