Сижу изачаю стандартную библиотеку С++. Дошел до шаблона auto_ptr<>. Не могу понять для чего нужен вспомогательный класс auto_ptr_ref и связанный с ним преобразования. Более конкретно вот кусок определения шаблона класса auto_ptr<> из заголовка <memory>
template <typename _Tp>
class auto_ptr {
private:
_Tp* _M_ptr;
public:
typedef _Tp element_type;
// все лешнее вырезано :)
auto_ptr(auto_ptr_ref<element_type> __ref) throw()
: _M_ptr(__ref._M_ptr) { }
auto_ptr& operator=(auto_ptr_ref<element_type> __ref) throw()
{
if (__ref._M_ptr != this->get())
{
delete _M_ptr;
_M_ptr = __ref._M_ptr;
}
return *this;
}
template<typename _Tp1>
operator auto_ptr_ref<_Tp1>() throw()
{ return auto_ptr_ref<_Tp1>(this->release()); }
template<typename _Tp1>
operator auto_ptr<_Tp1>() throw()
{ return auto_ptr<_Tp1>(this->release()); }
}; //конец объявления auto_ptr<>
еще более круто было бы если чья-то свтлая голова написала что происходит при вызове типа:
auto_ptr<int> f();
int main()
{
auto_ptr<int> p = f();
}
я имею ввиду не механизм передачи влядения, а именно какие конструкторы и преобразования вызываются в данной кончтрукции.
Спасибо
Ответ на:
комментарий
от mumg
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от mumg

Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от klalafuda
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.