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>
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; }
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.
auto_ptr(element_type *__p=0)
An auto_ptr is usually constructed from a raw pointer.
_Tp element_type
The pointed-to type.
auto_ptr(auto_ptr< _Tp1 > &__a)
An auto_ptr can be constructed from another auto_ptr.
auto_ptr & operator=(auto_ptr &__a)
auto_ptr assignment operator.
auto_ptr(auto_ptr_ref< element_type > __ref)
Automatic conversions.
auto_ptr & operator=(auto_ptr< _Tp1 > &__a)
auto_ptr assignment operator.
element_type * release()
Bypassing the smart pointer.
void reset(element_type *__p=0)
Forcibly deletes the managed object.
element_type * get() const
Bypassing the smart pointer.
element_type * operator->() const
Smart pointer dereferencing.
auto_ptr(auto_ptr &__a)
An auto_ptr can be constructed from another auto_ptr.
constexpr unique_ptr() noexcept
Default constructor, creates a unique_ptr that owns nothing.
A simple smart pointer providing strict ownership semantics.