.TH "std::unique_ptr< _Tp, _Dp >" 3cxx "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME std::unique_ptr< _Tp, _Dp > \- A move-only smart pointer that manages unique ownership of a resource\&. .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 \fB__uniq_ptr_impl\fP< _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>> constexpr \fBunique_ptr\fP () noexcept" .br .RI "Default constructor, creates a unique_ptr that owns nothing\&. " .ti -1c .RI "template<\fBtypename\fP _Up , \fBtypename\fP = _Require< is_convertible<_Up*, _Tp*>, is_same<_Dp, default_delete<_Tp>>>> \fBunique_ptr\fP (\fBauto_ptr\fP< _Up > &&\fB__u\fP) noexcept" .br .RI "Converting constructor from \fCauto_ptr\fP\&. " .ti -1c .RI "\fBunique_ptr\fP (const \fBunique_ptr\fP &)=\fBdelete\fP" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> constexpr \fBunique_ptr\fP (nullptr_t) noexcept" .br .RI "Creates a unique_ptr that owns nothing\&. " .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> _GLIBCXX23_CONSTEXPR \fBunique_ptr\fP (pointer __p) noexcept" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> _GLIBCXX23_CONSTEXPR \fBunique_ptr\fP (pointer __p, \fB__enable_if_t\fP::value, \fB_Del\fP && > __d) noexcept" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> _GLIBCXX23_CONSTEXPR \fBunique_ptr\fP (pointer __p, const \fBdeleter_type\fP &__d) noexcept" .br .ti -1c .RI "template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP \fB_DelUnref\fP = typename remove_reference<_Del>::type> _GLIBCXX23_CONSTEXPR \fBunique_ptr\fP (pointer, \fB__enable_if_t\fP< \fBis_lvalue_reference\fP< \fB_Del\fP >::value, \fB_DelUnref\fP && >)=\fBdelete\fP" .br .ti -1c .RI "\fBunique_ptr\fP (\fBunique_ptr\fP &&)=\fBdefault\fP" .br .RI "Move constructor\&. " .ti -1c .RI "template<\fBtypename\fP _Up , \fBtypename\fP \fB_Ep\fP , \fBtypename\fP = _Require< __safe_conversion_up<_Up, _Ep>, __conditional_t::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>>> _GLIBCXX23_CONSTEXPR \fBunique_ptr\fP (\fBunique_ptr\fP< _Up, \fB_Ep\fP > &&\fB__u\fP) noexcept" .br .RI "Converting constructor from another type\&. " .ti -1c .RI "\fB~unique_ptr\fP () noexcept" .br .RI "Destructor, invokes the deleter if the stored pointer is not null\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR pointer \fBget\fP () const noexcept" .br .RI "Return the stored pointer\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR const \fBdeleter_type\fP & \fBget_deleter\fP () const noexcept" .br .RI "Return a reference to the stored deleter\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBdeleter_type\fP & \fBget_deleter\fP () noexcept" .br .RI "Return a reference to the stored deleter\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBoperator bool\fP () const noexcept" .br .RI "Return \fCtrue\fP if the stored pointer is not null\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBadd_lvalue_reference\fP< element_type >::type \fBoperator*\fP () const noexcept(noexcept(*\fBstd::declval\fP< pointer >()))" .br .RI "Dereference the stored pointer\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR pointer \fBoperator\->\fP () const noexcept" .br .RI "Return the stored pointer\&. " .ti -1c .RI "\fBunique_ptr\fP & \fBoperator=\fP (const \fBunique_ptr\fP &)=\fBdelete\fP" .br .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBunique_ptr\fP & \fBoperator=\fP (nullptr_t) noexcept" .br .RI "Reset the unique_ptr to empty, invoking the deleter if necessary\&. " .ti -1c .RI "\fBunique_ptr\fP & \fBoperator=\fP (\fBunique_ptr\fP &&)=\fBdefault\fP" .br .RI "Move assignment operator\&. " .ti -1c .RI "template<\fBtypename\fP _Up , \fBtypename\fP \fB_Ep\fP > _GLIBCXX23_CONSTEXPR \fBenable_if\fP< __and_< \fB__safe_conversion_up\fP< _Up, \fB_Ep\fP >, \fBis_assignable\fP< \fBdeleter_type\fP &, \fB_Ep\fP && > >::value, \fBunique_ptr\fP & >::type \fBoperator=\fP (\fBunique_ptr\fP< _Up, \fB_Ep\fP > &&\fB__u\fP) noexcept" .br .RI "Assignment from another type\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR pointer \fBrelease\fP () noexcept" .br .RI "Release ownership of any stored pointer\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBvoid\fP \fBreset\fP (pointer __p=pointer()) noexcept" .br .RI "Replace the stored pointer\&. " .ti -1c .RI "_GLIBCXX23_CONSTEXPR \fBvoid\fP \fBswap\fP (\fBunique_ptr\fP &\fB__u\fP) noexcept" .br .RI "Exchange the pointer and deleter with another object\&. " .in -1c .SS "Related Symbols" (Note that these are not member symbols\&.) .in +1c .ti -1c .RI "template<\fBtypename\fP _Tp , typename\&.\&.\&. _Args> _GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > \fBmake_unique\fP (\fB_Args\fP &&\&.\&.\&. \fB__args\fP)" .br .ti -1c .RI "template<\fBtypename\fP _Tp , typename\&.\&.\&. _Args> __detail::__invalid_make_unique_t< _Tp > \fBmake_unique\fP (\fB_Args\fP &&\&.\&.\&.)=\fBdelete\fP" .br .ti -1c .RI "template<\fBtypename\fP _Tp > _GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > \fBmake_unique\fP (size_t \fB__num\fP)" .br .ti -1c .RI "template<\fBtypename\fP _Tp > _GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > \fBmake_unique_for_overwrite\fP ()" .br .ti -1c .RI "template<\fBtypename\fP _Tp , typename\&.\&.\&. _Args> __detail::__invalid_make_unique_t< _Tp > \fBmake_unique_for_overwrite\fP (\fB_Args\fP &&\&.\&.\&.)=\fBdelete\fP" .br .ti -1c .RI "template<\fBtypename\fP _Tp > _GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > \fBmake_unique_for_overwrite\fP (size_t \fB__num\fP)" .br .ti -1c .RI "template<\fBtypename\fP _CharT , \fBtypename\fP _Traits , \fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP > \fBbasic_ostream\fP< _CharT, _Traits > & \fBoperator<<\fP (\fBbasic_ostream\fP< _CharT, _Traits > &\fB__os\fP, const \fBunique_ptr\fP< _Tp, \fB_Dp\fP > &__p)" .br .RI "Stream output operator for unique_ptr\&. " .ti -1c .RI "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP > _GLIBCXX23_CONSTEXPR \fBenable_if\fP< \fB__is_swappable\fP< \fB_Dp\fP >::value >::type \fBswap\fP (\fBunique_ptr\fP< _Tp, \fB_Dp\fP > &__x, \fBunique_ptr\fP< _Tp, \fB_Dp\fP > &\fB__y\fP) noexcept" .br .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 >"A move-only smart pointer that manages unique ownership of a resource\&. .PP \fBSince\fP .RS 4 C++11 .RE .PP .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>> constexpr \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\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> _GLIBCXX23_CONSTEXPR \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\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> _GLIBCXX23_CONSTEXPR \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (pointer __p, const \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 .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = deleter_type, \fBtypename\fP = _Require>> _GLIBCXX23_CONSTEXPR \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (pointer __p, \fB__enable_if_t\fP::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 .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP \fB_Del\fP = _Dp, \fBtypename\fP = _DeleterConstraint<_Del>> constexpr \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\&. .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 > &&)\fC [default]\fP" .PP Move constructor\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP _Up , \fBtypename\fP \fB_Ep\fP , \fBtypename\fP = _Require< __safe_conversion_up<_Up, _Ep>, __conditional_t::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>>> _GLIBCXX23_CONSTEXPR \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (\fBunique_ptr\fP< _Up, \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\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP > template<\fBtypename\fP _Up , \fBtypename\fP > \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::unique_ptr (\fBauto_ptr\fP< _Up > && __u)\fC [inline]\fP, \fC [noexcept]\fP" .PP Converting constructor from \fCauto_ptr\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 References \fBstd::unique_ptr< _Tp, _Dp >::get_deleter()\fP, and \fBstd::move()\fP\&. .SH "Member Function Documentation" .PP .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::get () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Return the stored pointer\&. .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, and \fBstd::unique_ptr< _Tp[], _Dp >::operator[]()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR const \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\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \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 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, and \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \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 References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \fBadd_lvalue_reference\fP< element_type >::type \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator* () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Dereference the stored pointer\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::operator\-> () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Return the stored pointer\&. .PP References \fBstd::unique_ptr< _Tp, _Dp >::get()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \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 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 > &&)\fC [default]\fP" .PP Move assignment operator\&. Invokes the deleter if this object owns a pointer\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> template<\fBtypename\fP _Up , \fBtypename\fP \fB_Ep\fP > _GLIBCXX23_CONSTEXPR \fBenable_if\fP< __and_< \fB__safe_conversion_up\fP< _Up, \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< _Up, \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 if this object owns a pointer\&. .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>> _GLIBCXX23_CONSTEXPR pointer \fBstd::unique_ptr\fP< _Tp, \fB_Dp\fP >::release ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Release ownership of any stored pointer\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \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 References \fBstd::move()\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, and \fBstd::unique_ptr< _Tp[], _Dp >::operator=()\fP\&. .SS "template<\fBtypename\fP _Tp , \fBtypename\fP \fB_Dp\fP = default_delete<_Tp>> _GLIBCXX23_CONSTEXPR \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\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.