Использование std :: unique_ptr

std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2(new int);
p2=p1;

Здесь кажется, что p1 больше не "уникальный", поскольку p2 также относится к нему

Это законный c ++? Есть ли у unique_ptr copy_semantics? Если нет, и если он имеет только семантику перемещения, устанавливается ли для p1 значение NULL после присвоения его p2?

РЕДАКТИРОВАТЬ:

хорошо, значит, правильная версия -

 p2=std::move(p1)

. Согласно этому, после этого назначения p1 недействителен? А разница с auto_ptr здесь? более безопасно явно указать передачу права собственности, чем неявно, как в случае с auto_ptr, я думаю

41
задан sbi 16 May 2011 в 13:54
поделиться