Я пытаюсь создать массив классов, которые нельзя скопировать или переместить. Поэтому мне нужно создать объекты на месте, и я не могу понять, как это сделать:
#include <vector>
struct Foo {
Foo(int) { }
Foo(const Foo &) = delete;
Foo & operator =(const Foo &) = delete;
Foo(Foo &&) = delete;
Foo & operator =(Foo &&) = delete;
};
struct Bla {
Bla(const std::vector<int> & args) {
for (auto i : args) {
foo.emplace_back(i);
}
}
std::vector<Foo> foo;
};
Компилятор жалуется на удаленный конструктор перемещения, потому что не гарантируется, что все объекты построены на месте и никогда не перемещаются. Мне не нужно использовать std::vector
в качестве контейнера, поэтому не стесняйтесь предлагать что-то еще.