Я не могу переместить std::vector<std::unique_ptr<..>>
из функции: MSVC жалуется (C2280) на попытку ссылки на удаленную функцию.
Как это будет работать?
#include <vector>
#include <iostream>
#include <memory>
using namespace std;
class foo {
public:
int i;
};
vector<unique_ptr<foo>> test() {
vector<unique_ptr<foo>> ret{};
auto f = make_unique<foo>();
f->i = 1;
ret.push_back(move(f));
return move(ret);
}
int main(int argc, char** argv) {
auto t = test();
for (auto j : t) {
// fails here: --^
cout << j->i << endl;
}
getchar();
}
Полная ошибкасообщение гласит:
'std :: unique_ptr> :: unique_ptr (const std :: unique_ptr <_Ty, std :: default_delete <_Ty >> &)': попытка сослаться на удаленную функцию