STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | List of all members
unique_ptr< _Ty, _Dx > Class Template Reference
Inheritance diagram for unique_ptr< _Ty, _Dx >:
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value >

Public Types

typedef unique_ptr< _Ty, _Dx > _Myt
 
typedef _Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
 
typedef _Mybase::pointer pointer
 
typedef _Ty element_type
 
typedef _Dx deleter_type
 

Public Member Functions

 unique_ptr () _NOEXCEPT
 
 unique_ptr (nullptr_t) _NOEXCEPT
 
_Mytoperator= (nullptr_t) _NOEXCEPT
 
 unique_ptr (pointer _Ptr) _NOEXCEPT
 
 unique_ptr (pointer _Ptr, typename _If< is_reference< _Dx >::value, _Dx, const typename remove_reference< _Dx >::type & >::type _Dt) _NOEXCEPT
 
 unique_ptr (pointer _Ptr, typename remove_reference< _Dx >::type &&_Dt) _NOEXCEPT
 
 unique_ptr (unique_ptr &&_Right) _NOEXCEPT
 
template<class _Ty2 , class _Dx2 , class = typename enable_if<!is_array<_Ty2>::value && is_convertible<typename unique_ptr<_Ty2, _Dx2>::pointer, pointer>::value && ((is_reference<_Dx>::value && is_same<_Dx, _Dx2>::value) || (!is_reference<_Dx>::value && is_convertible<_Dx2, _Dx>::value)), void>::type>
 unique_ptr (unique_ptr< _Ty2, _Dx2 > &&_Right) _NOEXCEPT
 
template<class _Ty2 , class = typename enable_if<is_convertible<_Ty2 *, _Ty *>::value && is_same<_Dx, default_delete<_Ty> >::value, void>::type>
 unique_ptr (auto_ptr< _Ty2 > &&_Right) _NOEXCEPT
 
template<class _Ty2 , class _Dx2 >
enable_if<!is_array< _Ty2 >::value &&is_convertible< typename unique_ptr< _Ty2, _Dx2 >::pointer, pointer >::value, _Myt & >::type operator= (unique_ptr< _Ty2, _Dx2 > &&_Right) _NOEXCEPT
 
_Mytoperator= (_Myt &&_Right) _NOEXCEPT
 
void swap (_Myt &_Right) _NOEXCEPT
 
 ~unique_ptr () _NOEXCEPT
 
add_reference< _Ty >::type operator* () const
 
pointer operator-> () const _NOEXCEPT
 
pointer get () const _NOEXCEPT
 
 operator bool () const _NOEXCEPT
 
pointer release () _NOEXCEPT
 
void reset (pointer _Ptr=pointer()) _NOEXCEPT
 
 unique_ptr (const _Myt &)=delete
 
_Mytoperator= (const _Myt &)=delete
 

Additional Inherited Members

- Private Types inherited from _Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value >
typedef remove_reference< _Dx >::type _Dx_noref
 
typedef _Get_deleter_pointer_type< _Ty, _Dx_noref >::type pointer
 
- Private Member Functions inherited from _Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value >
 _Unique_ptr_base (pointer _Ptr, _Dx _Dt)
 
 _Unique_ptr_base (pointer _Ptr)
 
 _Unique_ptr_base (_Ptr2 _Ptr, _Dx2 _Dt)
 
 _Unique_ptr_base (_Ptr2 _Ptr)
 
_Dx_norefget_deleter ()
 
const _Dx_norefget_deleter () const
 
- Private Attributes inherited from _Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value >
pointer _Myptr
 
_Dx _Mydel
 

Member Typedef Documentation

template<class _Ty, class _Dx>
typedef _Unique_ptr_base<_Ty, _Dx, is_empty<_Dx>::value || is_same<default_delete<_Ty>, _Dx>::value> unique_ptr< _Ty, _Dx >::_Mybase
template<class _Ty, class _Dx>
typedef unique_ptr<_Ty, _Dx> unique_ptr< _Ty, _Dx >::_Myt
template<class _Ty, class _Dx>
typedef _Dx unique_ptr< _Ty, _Dx >::deleter_type
template<class _Ty, class _Dx>
typedef _Ty unique_ptr< _Ty, _Dx >::element_type
template<class _Ty, class _Dx>
typedef _Mybase::pointer unique_ptr< _Ty, _Dx >::pointer

Constructor & Destructor Documentation

template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( )
inline
1344  : _Mybase(pointer())
1345  { // default construct
1346  static_assert(!is_pointer<_Dx>::value,
1347  "unique_ptr constructed with null deleter pointer");
1348  }
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
Definition: type_traits:401
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( nullptr_t  )
inline
1351  : _Mybase(pointer())
1352  { // null pointer construct
1353  static_assert(!is_pointer<_Dx>::value,
1354  "unique_ptr constructed with null deleter pointer");
1355  }
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
Definition: type_traits:401
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( pointer  _Ptr)
inlineexplicit
1364  : _Mybase(_Ptr)
1365  { // construct with pointer
1366  static_assert(!is_pointer<_Dx>::value,
1367  "unique_ptr constructed with null deleter pointer");
1368  }
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
Definition: type_traits:401
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( pointer  _Ptr,
typename _If< is_reference< _Dx >::value, _Dx, const typename remove_reference< _Dx >::type & >::type  _Dt 
)
inline
1373  : _Mybase(_Ptr, _Dt)
1374  { // construct with pointer and (maybe const) deleter&
1375  }
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( pointer  _Ptr,
typename remove_reference< _Dx >::type &&  _Dt 
)
inline
1379  : _Mybase(_Ptr, _STD move(_Dt))
1380  { // construct by moving deleter
1381  static_assert(!is_reference<_Dx>::value,
1382  "unique_ptr constructed with reference to rvalue deleter");
1383  }
_OutIt move(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2447
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
Definition: type_traits:353
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( unique_ptr< _Ty, _Dx > &&  _Right)
inline
1386  : _Mybase(_Right.release(),
1387  _STD forward<_Dx>(_Right.get_deleter()))
1388  { // construct by moving _Right
1389  }
pointer release() _NOEXCEPT
Definition: memory:1471
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
_Dx_noref & get_deleter()
Definition: memory:1264
template<class _Ty, class _Dx>
template<class _Ty2 , class _Dx2 , class = typename enable_if<!is_array<_Ty2>::value && is_convertible<typename unique_ptr<_Ty2, _Dx2>::pointer, pointer>::value && ((is_reference<_Dx>::value && is_same<_Dx, _Dx2>::value) || (!is_reference<_Dx>::value && is_convertible<_Dx2, _Dx>::value)), void>::type>
unique_ptr< _Ty, _Dx >::unique_ptr ( unique_ptr< _Ty2, _Dx2 > &&  _Right)
inline
1401  : _Mybase(_Right.release(),
1402  _STD forward<_Dx2>(_Right.get_deleter()))
1403  { // construct by moving _Right
1404  }
pointer release() _NOEXCEPT
Definition: memory:1471
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
template<class _Ty, class _Dx>
template<class _Ty2 , class = typename enable_if<is_convertible<_Ty2 *, _Ty *>::value && is_same<_Dx, default_delete<_Ty> >::value, void>::type>
unique_ptr< _Ty, _Dx >::unique_ptr ( auto_ptr< _Ty2 > &&  _Right)
inline
1411  : _Mybase(_Right.release())
1412  { // construct by moving _Right
1413  }
_Unique_ptr_base< _Ty, _Dx, is_empty< _Dx >::value||is_same< default_delete< _Ty >, _Dx >::value > _Mybase
Definition: memory:1336
_Ty * release() _THROW0()
Definition: xmemory:979
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::~unique_ptr ( )
inline
1446  { // destroy the object
1447  if (this->_Myptr != pointer())
1448  this->get_deleter()(this->_Myptr);
1449  }
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::unique_ptr ( const _Myt )
delete

Member Function Documentation

template<class _Ty, class _Dx>
pointer unique_ptr< _Ty, _Dx >::get ( ) const
inline
1462  { // return pointer to object
1463  return (this->_Myptr);
1464  }
template<class _Ty, class _Dx>
unique_ptr< _Ty, _Dx >::operator bool ( ) const
inlineexplicit
1467  { // test for non-null pointer
1468  return (this->_Myptr != pointer());
1469  }
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
add_reference<_Ty>::type unique_ptr< _Ty, _Dx >::operator* ( ) const
inline
1452  { // return reference to object
1453  return (*this->_Myptr);
1454  }
template<class _Ty, class _Dx>
pointer unique_ptr< _Ty, _Dx >::operator-> ( ) const
inline
1457  { // return pointer to class object
1458  return (_STD pointer_traits<pointer>::pointer_to(**this));
1459  }
Definition: xmemory0:198
template<class _Ty, class _Dx>
_Myt& unique_ptr< _Ty, _Dx >::operator= ( nullptr_t  )
inline
1358  { // assign a null pointer
1359  reset();
1360  return (*this);
1361  }
void reset(pointer _Ptr=pointer()) _NOEXCEPT
Definition: memory:1478
template<class _Ty, class _Dx>
template<class _Ty2 , class _Dx2 >
enable_if<!is_array<_Ty2>::value && is_convertible<typename unique_ptr<_Ty2, _Dx2>::pointer, pointer>::value, _Myt&>::type unique_ptr< _Ty, _Dx >::operator= ( unique_ptr< _Ty2, _Dx2 > &&  _Right)
inline
1422  { // assign by moving _Right
1423  reset(_Right.release());
1424  this->get_deleter() = _STD forward<_Dx2>(_Right.get_deleter());
1425  return (*this);
1426  }
void reset(pointer _Ptr=pointer()) _NOEXCEPT
Definition: memory:1478
pointer release() _NOEXCEPT
Definition: memory:1471
template<class _Ty, class _Dx>
_Myt& unique_ptr< _Ty, _Dx >::operator= ( _Myt &&  _Right)
inline
1429  { // assign by moving _Right
1430  if (this != &_Right)
1431  { // different, do the move
1432  reset(_Right.release());
1433  this->get_deleter() = _STD forward<_Dx>(_Right.get_deleter());
1434  }
1435  return (*this);
1436  }
void reset(pointer _Ptr=pointer()) _NOEXCEPT
Definition: memory:1478
const _Ty & _Right
Definition: algorithm:4087
template<class _Ty, class _Dx>
_Myt& unique_ptr< _Ty, _Dx >::operator= ( const _Myt )
delete
template<class _Ty, class _Dx>
pointer unique_ptr< _Ty, _Dx >::release ( )
inline
1472  { // yield ownership of pointer
1473  pointer _Ans = this->_Myptr;
1474  this->_Myptr = pointer();
1475  return (_Ans);
1476  }
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
void unique_ptr< _Ty, _Dx >::reset ( pointer  _Ptr = pointer())
inline
1479  { // establish new pointer
1480  pointer _Old = this->_Myptr;
1481  this->_Myptr = _Ptr;
1482  if (_Old != pointer())
1483  this->get_deleter()(_Old);
1484  }
_Mybase::pointer pointer
Definition: memory:1337
template<class _Ty, class _Dx>
void unique_ptr< _Ty, _Dx >::swap ( _Myt _Right)
inline
1439  { // swap elements
1440  _Swap_adl(this->_Myptr, _Right._Myptr);
1441  _Swap_adl(this->get_deleter(),
1442  _Right.get_deleter());
1443  }
const _Ty & _Right
Definition: algorithm:4087

The documentation for this class was generated from the following file: