У меня есть тип, из которого я удалил конструктор копирования, и хотел бы иметь vector
этого типа, поэтому мне нужно создать все элементы с помощью emplace_back
. Но для emplace_back
требуется конструктор копирования, поскольку компилятор дает предупреждение о невозможности создания экземпляра emplace_back
, поскольку конструктор копирования был удален. Зачем нужен конструктор копирования? Я думал, что цель emplace_back
заключалась в создании vector
без копирования чего-либо. Могу ли я даже vector
объектов, у которых нет конструктора копирования?
class MyType {
public:
MyType(std::array<double, 6> a) {}
MyType(const MyType& that) = delete;
};
int main() {
std::vector<MyType> v;
std::array<double, 6> a = {1,2,3,4,5,6};
v.emplace_back(a);
}
Компилятор - clang/llvm.