Господа может кто нить объяснить почему weak_ptr имеет такой странный оператор копирования?
weak_ptr & operator=(weak_ptr const & r);
template<class Y> weak_ptr & operator=(weak_ptr<Y> const & r);
template<class Y> weak_ptr & operator=(shared_ptr<Y> const & r);
Effects: Equivalent to weak_ptr(r).swap(*this).
Я думал что подобную семантику имеют указатели типа auto_ptr у которых есть собственность, но нет подсчета ссылок. Но этому то зачем?
Здравствуйте, PoM-PoM 40mm, Вы писали:
PP4>Я думал что подобную семантику имеют указатели типа auto_ptr у которых есть собственность, но нет подсчета ссылок. Но этому то зачем?
Видимо по ошибке был создан этот вопрос. В чем странность?
template<class Y> weak_ptr(shared_ptr<Y> const & r);
weak_ptr(weak_ptr const & r);
template<class Y> weak_ptr(weak_ptr<Y> const & r);
...
weak_ptr & operator=(weak_ptr const & r);
template<class Y> weak_ptr & operator=(weak_ptr<Y> const & r);
template<class Y> weak_ptr & operator=(shared_ptr<Y> const & r);
А это
weak_ptr(r).swap(*this) тоже не должно смущать, так как swap не с r, а с weak_ptr(r), т.е. с новым временным объектом.