I tried to define move constructor Person(Person&&)
and delete default one Person() = delete
, but I still get std::unique_ptr<Person,std::default_delete<Person>>::unique_ptr(const std::unique_ptr<Person,std::default_delete<Person>> &)': attempting to reference a deleted function
.
I tried to manually iterate and move one item at a time, but this didn't help. What am I missing here?
Attempt
v2.push_back(std::vector<std::unique_ptr<Person>>());
for (const auto& p : v)
{
v2[0].push_back(std::move(p));
}
Code
struct Person
{
std::string name;
Person(std::string name) {}
};
std::vector<std::unique_ptr<Person>> v;
std::vector<std::vector<std::unique_ptr<Person>>> v2;
std::unique_ptr<Person> ptr1 = std::make_unique<Person>("name");
v.push_back(std::move(ptr1));
v2.push_back(v);