¿Cómo declarar un vector de unique_ptr's como miembro de datos de clase?

Me gustaría tener un vector de unique_ptr's como miembro de una clase que estoy haciendo.

class Foo {
    [...]

private:
    vector<unique_ptr<Bar>> barList;
}

Pero luego empiezo a recibir mensajes de error crípticos de la VS2010 compilador:

error C2248: 'std::unique_ptr<_Ty>::operator =' : cannot access private member declared in class 'std::unique_ptr<_Ty>'

Junto con un puñado de líneas de error debajo de las que se sumergen en la implementación de Microsoft destd::_Copy_impl<> ...

Cambié la declaración de miembro a

vector<unique_ptr<Bar>>* barList;

Y se compila. Pero no puedo evitar preguntarme por qué no puedo hacerlo de la manera que originalmente quería. Para sonrisas, probé esto y funciona bien:

vector<Bar> barList;

Pero ahora pierdo la comodidad deunique_ptr. ¡Quiero mi pastel y quiero comerlo también!

Respuestas a la pregunta(10)

Su respuesta a la pregunta