Книга непонятна с типами. вам нужно rvalue ref для construct a shared_ptr
из unique_ptr
:
template< class Y, class Deleter >
shared_ptr( std::unique_ptr<Y,Deleter>&& r );
проверьте этот код:
unique_ptr<int> up{new int{10}};
shared_ptr<int> sp(move(up));
cout << *sp <<'\n';
//cout << *up <<'\n'; // up is nullptr
Live ob Godbolt
умные указатели управляют временем жизни необработанного указателя, которым они владеют. unique_ptr
не разделяет права собственности, в то время как shared_ptr
делает. Когда вы создаете shared_ptr
из unique_ptr
, вы должны отказаться от его владения путем перемещения, и unique_ptr
не может быть скопировано.
Я думаю, что используя «предполагает владение», автор хочет заявить, чтоплохие вещи все еще могут случиться, если вы каким-либо образом измените указатель, принадлежащий интеллектуальным указателям.