Вы не можете выполнить глобальный поиск / замену, потому что вы можете скопировать auto_ptr
(с известными последствиями), но unique_ptr
можно только переместить.Все, что выглядит как
std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2 = p;
, должно стать по крайней мере таким:
std::unique_ptr<int> p(new int);
std::unique_ptr<int> p2 = std::move(p);
Что касается других различий, unique_ptr
может правильно обрабатывать массивы (это вызовет delete[]
,в то время как auto_ptr
попытается вызвать delete
.