30 #ifndef _BACKWARD_AUTO_PTR_H 
   31 #define _BACKWARD_AUTO_PTR_H 1 
   36 namespace std _GLIBCXX_VISIBILITY(default)
 
   38 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   47   template<
typename _Tp1>
 
   54     } _GLIBCXX_DEPRECATED;
 
   86   template<
typename _Tp>
 
  103       auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
 
  124       template<
typename _Tp1>
 
  138     reset(__a.release());
 
  152       template<
typename _Tp1>
 
  156       reset(__a.release());
 
  183     _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
 
  196     _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
 
  211       get() 
const throw() { 
return _M_ptr; }
 
  227     element_type* __tmp = _M_ptr;
 
  240       reset(element_type* __p = 0) throw()
 
  261       : _M_ptr(__ref._M_ptr) { }
 
  266     if (__ref._M_ptr != this->get())
 
  269         _M_ptr = __ref._M_ptr;
 
  274       template<
typename _Tp1>
 
  275         operator auto_ptr_ref<_Tp1>() 
throw()
 
  276         { 
return auto_ptr_ref<_Tp1>(this->
release()); }
 
  278       template<
typename _Tp1>
 
  279         operator auto_ptr<_Tp1>() 
throw()
 
  280         { 
return auto_ptr<_Tp1>(this->
release()); }
 
  281     } _GLIBCXX_DEPRECATED;
 
  290     } _GLIBCXX_DEPRECATED;
 
  292 #if __cplusplus >= 201103L 
  293   template<_Lock_policy _Lp>
 
  294   template<
typename _Tp>
 
  297     : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
 
  300   template<
typename _Tp, _Lock_policy _Lp>
 
  301   template<
typename _Tp1>
 
  304     : _M_ptr(__r.get()), _M_refcount()
 
  306       __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
 
  307       static_assert( sizeof(_Tp1) > 0, "incomplete type" );
 
  308       _Tp1* __tmp = __r.
get();
 
  309       _M_refcount = __shared_count<_Lp>(
std::
move(__r));
 
  310       __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
 
  313   template<typename _Tp>
 
  314   template<typename _Tp1>
 
  316     shared_ptr<_Tp>::shared_ptr(
std::
auto_ptr<_Tp1>&& __r)
 
  317     : __shared_ptr<_Tp>(
std::
move(__r)) { }
 
  319   template<
typename _Tp, 
typename _Dp>
 
  320   template<
typename _Up, 
typename>
 
  323     : _M_t(__u.
release(), deleter_type()) { }
 
  326 _GLIBCXX_END_NAMESPACE_VERSION
 
element_type * operator->() const 
Smart pointer dereferencing. 
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue. 
element_type * get() const 
Bypassing the smart pointer. 
_Tp element_type
The pointed-to type. 
A simple smart pointer providing strict ownership semantics. 
void reset(element_type *__p=0)
Forcibly deletes the managed object. 
auto_ptr & operator=(auto_ptr< _Tp1 > &__a)
auto_ptr assignment operator. 
element_type & operator*() const 
Smart pointer dereferencing. 
element_type * release()
Bypassing the smart pointer. 
auto_ptr(auto_ptr &__a)
An auto_ptr can be constructed from another auto_ptr. 
ISO C++ entities toplevel namespace is std. 
auto_ptr(auto_ptr< _Tp1 > &__a)
An auto_ptr can be constructed from another auto_ptr. 
auto_ptr(auto_ptr_ref< element_type > __ref)
Automatic conversions. 
constexpr unique_ptr() noexcept
Default constructor, creates a unique_ptr that owns nothing. 
auto_ptr & operator=(auto_ptr &__a)
auto_ptr assignment operator. 
auto_ptr(element_type *__p=0)
An auto_ptr is usually constructed from a raw pointer.