The problem was not std::vector<std::unique_ptr<int> >
itself, but the member variable of this type declared in a copiable class. Since the default copy constructor of the class calls the copy constructor of std::vector, which in turns calls the default constructor of std::unique_ptr, the later being deleted, compilation fails.
std::vector<std::unique_ptr<int> >
compiles fine as a local variable in a function.