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?
РЕДАКТИРОВАТЬ:
ок, поэтому правильная версия
p2=std::move(p1)
В соответствии с этим, после этого присвоения, p1 недействителен?А разница с auto_ptr здесь?более безопасно явно указать передачу права собственности, чем неявно, как это имеет место с auto_ptr, я думаю