У меня есть вектор структур, которые можно скопировать, но не назначать:
struct Struct
{
inline Struct(const std::string& text, int n) : _text(text), _n(n) {}
inline Struct(const Struct& other) : _text(other._text), _n(other._n) {}
const std::string _text;
const int _n;
Struct& operator=(const Struct&) = delete;
};
Все работало нормально. Фактически, я мог бы даже передать std::vector<Struct>
вокруг по значению в качестве возвращаемого значения функции. И все же это не удается:
std::vector<TextFragment> v1, v2;
v2 = v1;
Ошибка, конечно, такова:
error: C2280: 'Struct & Struct:: operator = (const Struct &)': попытка ссылки на удаленную функцию
Я не понимаю, почему он пытается это сделать. Это какая-то оптимизация, чтобы избежать перераспределения блока векторной памяти?..