.TH "std::unique_ptr< _Tp, _Dp >" 3cxx "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME std::unique_ptr< _Tp, _Dp > \- 20\&.7\&.1\&.2 unique_ptr for single objects\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .SS "Public Types" .in +1c .ti -1c .RI "\fBusing\fP \fBdeleter_type\fP = \fB_Dp\fP" .br .ti -1c .RI "\fBusing\fP \fBelement_type\fP = _Tp" .br .ti -1c .RI "\fBusing\fP \fBpointer\fP = \fBtypename\fP __uniq_ptr_impl< _Tp, \fB_Dp\fP >::pointer" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBconstexpr\fP \fBunique_ptr\fP () \fBnoexcept\fP" .br .RI "Default constructor, creates a unique_ptr that owns nothing\&. " .ti -1c .RI "template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP > \fBunique_ptr\fP (\fBauto_ptr\fP< \fB_Up\fP > &&\fB__u\fP) \fBnoexcept\fP" .br .ti -1c .RI "\fBunique_ptr\fP (\fBconst\fP \fBunique_ptr\fP &)=\fBdelete\fP" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBconstexpr\fP \fBunique_ptr\fP (nullptr_t) \fBnoexcept\fP" .br .RI "Creates a unique_ptr that owns nothing\&. " .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBunique_ptr\fP (pointer __p) \fBnoexcept\fP" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> \fBunique_ptr\fP (pointer __p, __enable_if_t::value, \fB_Del\fP && > __d) \fBnoexcept\fP" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> \fBunique_ptr\fP (pointer __p, \fBconst\fP \fBdeleter_type\fP &__d) \fBnoexcept\fP" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP \fB_DelUnref\fP = typename remove_reference<_Del>::type> \fBunique_ptr\fP (pointer, __enable_if_t< \fBis_lvalue_reference\fP< \fB_Del\fP >::value, \fB_DelUnref\fP && >)=\fBdelete\fP" .br .ti -1c .RI "\fBunique_ptr\fP (\fBunique_ptr\fP &&\fB__u\fP) \fBnoexcept\fP" .br .RI "Move constructor\&. " .ti -1c .RI "template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP \fB_Ep\fP , \fBtypename\fP = _Require< __safe_conversion_up<_Up, _Ep>, typename conditional::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>::type>> \fBunique_ptr\fP (\fBunique_ptr\fP< \fB_Up\fP, \fB_Ep\fP > &&\fB__u\fP) \fBnoexcept\fP" .br .RI "Converting constructor from another type\&. " .ti -1c .RI "\fB~unique_ptr\fP () \fBnoexcept\fP" .br .RI "Destructor, invokes the deleter if the stored pointer is not null\&. " .ti -1c .RI "pointer \fBget\fP () \fBconst\fP \fBnoexcept\fP" .br .RI "Return the stored pointer\&. " .ti -1c .RI "\fBconst\fP \fBdeleter_type\fP & \fBget_deleter\fP () \fBconst\fP \fBnoexcept\fP" .br .RI "Return a reference to the stored deleter\&. " .ti -1c .RI "\fBdeleter_type\fP & \fBget_deleter\fP () \fBnoexcept\fP" .br .RI "Return a reference to the stored deleter\&. " .ti -1c .RI "\fBoperator bool\fP () \fBconst\fP \fBnoexcept\fP" .br .RI "Return \fCtrue\fP if the stored pointer is not null\&. " .ti -1c .RI "\fBadd_lvalue_reference\fP< element_type >::type \fBoperator*\fP () \fBconst\fP" .br .RI "Dereference the stored pointer\&. " .ti -1c .RI "pointer \fBoperator\->\fP () \fBconst\fP \fBnoexcept\fP" .br .RI "Return the stored pointer\&. " .ti -1c .RI "\fBunique_ptr\fP & \fBoperator=\fP (\fBconst\fP \fBunique_ptr\fP &)=\fBdelete\fP" .br .ti -1c .RI "\fBunique_ptr\fP & \fBoperator=\fP (nullptr_t) \fBnoexcept\fP" .br .RI "Reset the unique_ptr to empty, invoking the deleter if necessary\&. " .ti -1c .RI "\fBunique_ptr\fP & \fBoperator=\fP (\fBunique_ptr\fP &&\fB__u\fP) \fBnoexcept\fP" .br .RI "Move assignment operator\&. " .ti -1c .RI "template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP \fB_Ep\fP > \fBenable_if\fP< __and_< \fB__safe_conversion_up\fP< \fB_Up\fP, \fB_Ep\fP >, \fBis_assignable\fP< \fBdeleter_type\fP &, \fB_Ep\fP && > >::value, \fBunique_ptr\fP & >::type \fBoperator=\fP (\fBunique_ptr\fP< \fB_Up\fP, \fB_Ep\fP > &&\fB__u\fP) \fBnoexcept\fP" .br .RI "Assignment from another type\&. " .ti -1c .RI "pointer \fBrelease\fP () \fBnoexcept\fP" .br .RI "Release ownership of any stored pointer\&. " .ti -1c .RI "\fBvoid\fP \fBreset\fP (pointer __p=pointer()) \fBnoexcept\fP" .br .RI "Replace the stored pointer\&. " .ti -1c .RI "\fBvoid\fP \fBswap\fP (\fBunique_ptr\fP &\fB__u\fP) \fBnoexcept\fP" .br .RI "Exchange the pointer and deleter with another object\&. " .in -1c .SH "Detailed Description" .PP .SS "template<\fBtypename\fP _Tp, \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> .br class std::unique_ptr< _Tp, _Dp >"20\&.7\&.1\&.2 unique_ptr for single objects\&. .PP Definition at line \fB172\fP of file \fBunique_ptr\&.h\fP\&. .SH "Member Typedef Documentation" .PP .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBusing\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::deleter_type = \fB_Dp\fP" .PP Definition at line \fB183\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBusing\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::element_type = _Tp" .PP Definition at line \fB182\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBusing\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::pointer = \fBtypename\fP __uniq_ptr_impl<_Tp, \fB_Dp\fP>::pointer" .PP Definition at line \fB181\fP of file \fBunique_ptr\&.h\fP\&. .SH "Constructor & Destructor Documentation" .PP .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBconstexpr\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr ()\fC [inline]\fP, \fC [constexpr]\fP, \fC [noexcept]\fP" .PP Default constructor, creates a unique_ptr that owns nothing\&. .PP Definition at line \fB199\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (pointer __p)\fC [inline]\fP, \fC [explicit]\fP, \fC [noexcept]\fP" Takes ownership of a pointer\&. .PP \fBParameters\fP .RS 4 \fI__p\fP A pointer to an object of \fCelement_type\fP .RE .PP The deleter will be value-initialized\&. .PP Definition at line \fB211\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (pointer __p, \fBconst\fP \fBdeleter_type\fP & __d)\fC [inline]\fP, \fC [noexcept]\fP" Takes ownership of a pointer\&. .PP \fBParameters\fP .RS 4 \fI__p\fP A pointer to an object of \fCelement_type\fP .br \fI__d\fP A reference to a deleter\&. .RE .PP The deleter will be initialized with \fC__d\fP .PP Definition at line \fB224\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (pointer __p, __enable_if_t::value, \fB_Del\fP && > __d)\fC [inline]\fP, \fC [noexcept]\fP" Takes ownership of a pointer\&. .PP \fBParameters\fP .RS 4 \fI__p\fP A pointer to an object of \fCelement_type\fP .br \fI__d\fP An rvalue reference to a (non-reference) deleter\&. .RE .PP The deleter will be initialized with \fCstd::move(__d)\fP .PP Definition at line \fB236\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> \fBconstexpr\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (nullptr_t)\fC [inline]\fP, \fC [constexpr]\fP, \fC [noexcept]\fP" .PP Creates a unique_ptr that owns nothing\&. .PP Definition at line \fB250\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (\fBunique_ptr\fP< _Tp, \fB_Dp\fP > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Move constructor\&. .PP Definition at line \fB257\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP \fB_Ep\fP , \fBtypename\fP = _Require< __safe_conversion_up<_Up, _Ep>, typename conditional::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>::type>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (\fBunique_ptr\fP< \fB_Up\fP, \fB_Ep\fP > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Converting constructor from another type\&. Requires that the pointer owned by \fC__u\fP is convertible to the type of pointer owned by this object, \fC__u\fP does not own an array, and \fC__u\fP has a compatible deleter type\&. .PP Definition at line \fB271\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::~\fBunique_ptr\fP ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Destructor, invokes the deleter if the stored pointer is not null\&. .PP Definition at line \fB286\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get_deleter()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP > \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (\fBauto_ptr\fP< \fB_Up\fP > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Definition at line \fB328\fP of file \fBauto_ptr\&.h\fP\&. .SH "Member Function Documentation" .PP .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::get () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Return the stored pointer\&. .PP Definition at line \fB360\fP of file \fBunique_ptr\&.h\fP\&. .PP Referenced by \fBstd::unique_ptr< _Tp, _Dp >::operator bool()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator bool()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator*()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator\->()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator[]()\fP, \fBstd::unique_ptr< _Tp, _Dp >::release()\fP, and \fBstd::unique_ptr< _Tp[], _Dp >::release()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBconst\fP \fBdeleter_type\fP & \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::get_deleter () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Return a reference to the stored deleter\&. .PP Definition at line \fB370\fP of file \fBunique_ptr\&.h\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBdeleter_type\fP & \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::get_deleter ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Return a reference to the stored deleter\&. .PP Definition at line \fB365\fP of file \fBunique_ptr\&.h\fP\&. .PP Referenced by \fBstd::unique_ptr< _Tp[], _Dp >::~unique_ptr()\fP, \fBstd::unique_ptr< _Tp, _Dp >::~unique_ptr()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::reset()\fP, and \fBstd::unique_ptr< _Tp, _Dp >::reset()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator bool () const\fC [inline]\fP, \fC [explicit]\fP, \fC [noexcept]\fP" .PP Return \fCtrue\fP if the stored pointer is not null\&. .PP Definition at line \fB374\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBadd_lvalue_reference\fP< element_type >::type \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator* () const\fC [inline]\fP" .PP Dereference the stored pointer\&. .PP Definition at line \fB344\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator\-> () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Return the stored pointer\&. .PP Definition at line \fB352\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBunique_ptr\fP & \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator= (nullptr_t)\fC [inline]\fP, \fC [noexcept]\fP" .PP Reset the unique_ptr to empty, invoking the deleter if necessary\&. .PP Definition at line \fB334\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::reset()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBunique_ptr\fP & \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator= (\fBunique_ptr\fP< _Tp, \fB_Dp\fP > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Move assignment operator\&. .PP \fBParameters\fP .RS 4 \fI__u\fP The object to transfer ownership from\&. .RE .PP Invokes the deleter first if this object owns a pointer\&. .PP Definition at line \fB305\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get_deleter()\fP, and \fBstd::unique_ptr< _Tp, _Dp >::reset()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Up\fP , \fBtypename\fP \fB_Ep\fP > \fBenable_if\fP< __and_< \fB__safe_conversion_up\fP< \fB_Up\fP, \fB_Ep\fP >, \fBis_assignable\fP< \fBdeleter_type\fP &, \fB_Ep\fP && > >::value, \fBunique_ptr\fP & >::type \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator= (\fBunique_ptr\fP< \fB_Up\fP, \fB_Ep\fP > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Assignment from another type\&. .PP \fBParameters\fP .RS 4 \fI__u\fP The object to transfer ownership from, which owns a convertible pointer to a non-array object\&. .RE .PP Invokes the deleter first if this object owns a pointer\&. .PP Definition at line \fB325\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get_deleter()\fP, and \fBstd::unique_ptr< _Tp, _Dp >::reset()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::release ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Release ownership of any stored pointer\&. .PP Definition at line \fB381\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBvoid\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::reset (pointer __p = \fCpointer()\fP)\fC [inline]\fP, \fC [noexcept]\fP" .PP Replace the stored pointer\&. .PP \fBParameters\fP .RS 4 \fI__p\fP The new pointer to store\&. .RE .PP The deleter will be invoked if a pointer is already owned\&. .PP Definition at line \fB395\fP of file \fBunique_ptr\&.h\fP\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get_deleter()\fP, and \fBstd::unique_ptr< _Tp, _Dp >::swap()\fP\&. .PP Referenced by \fBstd::unique_ptr< _Tp, _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP, \fBstd::unique_ptr< _Tp, _Dp >::operator=()\fP, and \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> \fBvoid\fP \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::swap (\fBunique_ptr\fP< _Tp, \fB_Dp\fP > & __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Exchange the pointer and deleter with another object\&. .PP Definition at line \fB407\fP of file \fBunique_ptr\&.h\fP\&. .PP Referenced by \fBstd::unique_ptr< _Tp, _Dp >::reset()\fP\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.