std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2(new int);
p2=p1;
Кажется, что p1 больше не является "уникальным", так как p2 ссылается на него также
Это законный С++? Имеет ли unique_ptr copy_semantics? Если нет, и если он имеет только перемещение семантики, то p1 устанавливается в NULL после присвоения ему p2?
EDIT:
ok, поэтому правильная версия
p2=std::move(p1)
В соответствии с этим, после этого присваивания, p1 недействителен? И разница с auto_ptr здесь? более безопасно явно указывать передачу собственности, чем неявно, как это имеет место с auto_ptr. Думаю,