C++. Копирующий конструктор
Пишу структуру данных. Вот какие там конструкторы:
vector() {
CurrentData = Alloc().allocate(1);
FutureData = Alloc().allocate(2);
Capacity = 1;
}
explicit vector(std::size_t n) {
Capacity = 1;
while (Capacity < n) {
Capacity *= 2;
}
Size = n;
CurrentData = Alloc().allocate(Capacity);
FutureData = Alloc().allocate(2 * Capacity);
}
vector(std::size_t n, const T & value) {
Capacity = 1;
CurrentData = Alloc().allocate(Capacity);
FutureData = Alloc().allocate(2 * Capacity);
for (std::size_t i = 0; i < n; i++) {
push_back(value);
}
}
vector & operator=(const vector & other) {
Capacity = other.Capacity;
Size = other.Size;
CurrentData = Alloc().allocate(Capacity);
FutureData = Alloc().allocate(2 * Capacity);
for (std::size_t i = 0; i < Size; i++) {
CurrentData[i] = other.CurrentData[i];
FutureData[i] = other.FutureData[i];
}
return *this;
}
vector & operator=(vector &&) noexcept = default;
Однако при попытке вызвать конструктор в форме копирующего оператора присваивания вылазит это:
call to implicitly-deleted copy constructor of 'vector'
Что у меня не так?