Предположим, у меня есть класс с именем vector
, который поддерживает некоторый внутренний динамический массив типа T
, выделенный std::allocator<T>.
Теперь я создаю vector
типа U
, а позже хочу использовать семантику перемещения так что я могу использовать потребляемую им память для vector
типа T
, вот так:
vector<unsigned> u(512);
// Do something with v.
vector<double> t = std::move(u);
// Do something with t.
// Later, t gets destroyed.
Безопасно ли для меня использовать память, выделенную распределителем u
в конструкторе перемещения t
, и впоследствии освободить ее с помощью распределителя t
? Если это так, что я должен сделать, чтобы эта операция была безопасной? Я предполагаю, что сначала я должен вызвать allocator.destroy()
для каждого элемента внутреннего массива u
, используя распределитель u
.