<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libstdc++: std::unique_ptr< _Tp, _Dp > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libstdc++ </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('a07967.html','');}); /* @license-end */ </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="a07964.html">List of all members</a> </div> <div class="headertitle"> <div class="title">std::unique_ptr< _Tp, _Dp > Class Template Reference<div class="ingroups"><a class="el" href="a01480.html">Utilities</a> » <a class="el" href="a01474.html">Memory</a> » <a class="el" href="a01475.html">Pointer Abstractions</a></div></div> </div> </div><!--header--> <div class="contents"> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:a4306df45cab3b8a334d0d5f8bbea79e4"><td class="memTemplParams" colspan="2"><a id="a4306df45cab3b8a334d0d5f8bbea79e4"></a> template<typename _Up , typename _Ep > </td></tr> <tr class="memitem:a4306df45cab3b8a334d0d5f8bbea79e4"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__safe_conversion_up</b> = __and_< <a class="el" href="a03903.html">is_convertible</a>< typename <a class="el" href="a07967.html">unique_ptr</a>< _Up, _Ep >::pointer, pointer >, __not_< <a class="el" href="a03207.html">is_array</a>< _Up > > ></td></tr> <tr class="separator:a4306df45cab3b8a334d0d5f8bbea79e4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae1ad65a253637de3f579a2b421a1a533"><td class="memItemLeft" align="right" valign="top"><a id="ae1ad65a253637de3f579a2b421a1a533"></a> using </td><td class="memItemRight" valign="bottom"><b>deleter_type</b> = _Dp</td></tr> <tr class="separator:ae1ad65a253637de3f579a2b421a1a533"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a800f67c924e31464530c7094ae302e22"><td class="memItemLeft" align="right" valign="top"><a id="a800f67c924e31464530c7094ae302e22"></a> using </td><td class="memItemRight" valign="bottom"><b>element_type</b> = _Tp</td></tr> <tr class="separator:a800f67c924e31464530c7094ae302e22"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad86285dbf8e01acec11290ba0678cc0b"><td class="memItemLeft" align="right" valign="top"><a id="ad86285dbf8e01acec11290ba0678cc0b"></a> using </td><td class="memItemRight" valign="bottom"><b>pointer</b> = typename __uniq_ptr_impl< _Tp, _Dp >::pointer</td></tr> <tr class="separator:ad86285dbf8e01acec11290ba0678cc0b"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:a46c6ac3c3c51a2bf10ab8354043903fc"><td class="memTemplParams" colspan="2">template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </td></tr> <tr class="memitem:a46c6ac3c3c51a2bf10ab8354043903fc"><td class="memTemplItemLeft" align="right" valign="top">constexpr </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a07967.html#a46c6ac3c3c51a2bf10ab8354043903fc">unique_ptr</a> () noexcept</td></tr> <tr class="separator:a46c6ac3c3c51a2bf10ab8354043903fc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9265d990e022b96ae4ffd50977a4ba58"><td class="memTemplParams" colspan="2">template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </td></tr> <tr class="memitem:a9265d990e022b96ae4ffd50977a4ba58"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a07967.html#a9265d990e022b96ae4ffd50977a4ba58">unique_ptr</a> (pointer __p) noexcept</td></tr> <tr class="separator:a9265d990e022b96ae4ffd50977a4ba58"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aed2b83027dddfc25ead0747f819ee644"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#aed2b83027dddfc25ead0747f819ee644">unique_ptr</a> (pointer __p, typename <a class="el" href="a03047.html">conditional</a>< <a class="el" href="a03399.html">is_reference</a>< deleter_type >::value, deleter_type, const deleter_type & >::type __d) noexcept</td></tr> <tr class="separator:aed2b83027dddfc25ead0747f819ee644"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:accf546c02774a8a3fb3d878fe6259059"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#accf546c02774a8a3fb3d878fe6259059">unique_ptr</a> (pointer __p, typename <a class="el" href="a03935.html">remove_reference</a>< deleter_type >::type &&__d) noexcept</td></tr> <tr class="separator:accf546c02774a8a3fb3d878fe6259059"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af220c0835cdc6d384018d8e53b430142"><td class="memTemplParams" colspan="2">template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </td></tr> <tr class="memitem:af220c0835cdc6d384018d8e53b430142"><td class="memTemplItemLeft" align="right" valign="top">constexpr </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a07967.html#af220c0835cdc6d384018d8e53b430142">unique_ptr</a> (nullptr_t) noexcept</td></tr> <tr class="separator:af220c0835cdc6d384018d8e53b430142"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3d0c5c99ab01ee8a1581c4533e60a56a"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a3d0c5c99ab01ee8a1581c4533e60a56a">unique_ptr</a> (<a class="el" href="a07967.html">unique_ptr</a> &&__u) noexcept</td></tr> <tr class="separator:a3d0c5c99ab01ee8a1581c4533e60a56a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2fb272347a3713d3fc8f99efd0e84c74"><td class="memTemplParams" colspan="2">template<typename _Up , typename _Ep , typename = _Require< __safe_conversion_up<_Up, _Ep>, typename conditional<is_reference<_Dp>::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>::type>> </td></tr> <tr class="memitem:a2fb272347a3713d3fc8f99efd0e84c74"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a07967.html#a2fb272347a3713d3fc8f99efd0e84c74">unique_ptr</a> (<a class="el" href="a07967.html">unique_ptr</a>< _Up, _Ep > &&__u) noexcept</td></tr> <tr class="separator:a2fb272347a3713d3fc8f99efd0e84c74"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a95ee93d41835ecfbdf470b583d994d96"><td class="memTemplParams" colspan="2"><a id="a95ee93d41835ecfbdf470b583d994d96"></a> template<typename _Up , typename > </td></tr> <tr class="memitem:a95ee93d41835ecfbdf470b583d994d96"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>unique_ptr</b> (<a class="el" href="a08455.html">auto_ptr</a>< _Up > &&__u) noexcept</td></tr> <tr class="separator:a95ee93d41835ecfbdf470b583d994d96"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7d3350c3bffe99d66fc59d46d7a2c315"><td class="memItemLeft" align="right" valign="top"><a id="a7d3350c3bffe99d66fc59d46d7a2c315"></a>  </td><td class="memItemRight" valign="bottom"><b>unique_ptr</b> (const <a class="el" href="a07967.html">unique_ptr</a> &)=delete</td></tr> <tr class="separator:a7d3350c3bffe99d66fc59d46d7a2c315"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a934c3a2895f4ad9b413ee9132e949e81"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a934c3a2895f4ad9b413ee9132e949e81">~unique_ptr</a> () noexcept</td></tr> <tr class="separator:a934c3a2895f4ad9b413ee9132e949e81"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae29eb2b7c551c69c98995fc04f895781"><td class="memItemLeft" align="right" valign="top">pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#ae29eb2b7c551c69c98995fc04f895781">get</a> () const noexcept</td></tr> <tr class="separator:ae29eb2b7c551c69c98995fc04f895781"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a62f850d198437890dffea7a4e029602d"><td class="memItemLeft" align="right" valign="top">deleter_type & </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a62f850d198437890dffea7a4e029602d">get_deleter</a> () noexcept</td></tr> <tr class="separator:a62f850d198437890dffea7a4e029602d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0ce41e4825268546e4f1ecf5f5259af0"><td class="memItemLeft" align="right" valign="top">const deleter_type & </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a0ce41e4825268546e4f1ecf5f5259af0">get_deleter</a> () const noexcept</td></tr> <tr class="separator:a0ce41e4825268546e4f1ecf5f5259af0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9f21c10165ad856c5b6b2889b815a9bf"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a9f21c10165ad856c5b6b2889b815a9bf">operator bool</a> () const noexcept</td></tr> <tr class="separator:a9f21c10165ad856c5b6b2889b815a9bf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8e080072591682c8d1fb2bf468f51188"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a03955.html">add_lvalue_reference</a>< element_type >::type </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a8e080072591682c8d1fb2bf468f51188">operator*</a> () const</td></tr> <tr class="separator:a8e080072591682c8d1fb2bf468f51188"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad0486e6ff29eac8f1384948a4184e442"><td class="memItemLeft" align="right" valign="top">pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#ad0486e6ff29eac8f1384948a4184e442">operator-></a> () const noexcept</td></tr> <tr class="separator:ad0486e6ff29eac8f1384948a4184e442"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0d690f8c5fd6b05f0ceb1dc04d79c821"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a07967.html">unique_ptr</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a0d690f8c5fd6b05f0ceb1dc04d79c821">operator=</a> (<a class="el" href="a07967.html">unique_ptr</a> &&__u) noexcept</td></tr> <tr class="separator:a0d690f8c5fd6b05f0ceb1dc04d79c821"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ada7596fc9242151849616db656f4224e"><td class="memTemplParams" colspan="2">template<typename _Up , typename _Ep > </td></tr> <tr class="memitem:ada7596fc9242151849616db656f4224e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a04191.html">enable_if</a>< __and_< __safe_conversion_up< _Up, _Ep >, <a class="el" href="a03683.html">is_assignable</a>< deleter_type &, _Ep && > >::value, <a class="el" href="a07967.html">unique_ptr</a> & >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a07967.html#ada7596fc9242151849616db656f4224e">operator=</a> (<a class="el" href="a07967.html">unique_ptr</a>< _Up, _Ep > &&__u) noexcept</td></tr> <tr class="separator:ada7596fc9242151849616db656f4224e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a53f23836b9dcfc3558e768d48969a903"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a07967.html">unique_ptr</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a53f23836b9dcfc3558e768d48969a903">operator=</a> (nullptr_t) noexcept</td></tr> <tr class="separator:a53f23836b9dcfc3558e768d48969a903"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9b1154de7238e6e6e45e87d3834ac754"><td class="memItemLeft" align="right" valign="top"><a id="a9b1154de7238e6e6e45e87d3834ac754"></a> <a class="el" href="a07967.html">unique_ptr</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a07967.html">unique_ptr</a> &)=delete</td></tr> <tr class="separator:a9b1154de7238e6e6e45e87d3834ac754"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af40585665f237aca4a3364726b3fdb1d"><td class="memItemLeft" align="right" valign="top">pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#af40585665f237aca4a3364726b3fdb1d">release</a> () noexcept</td></tr> <tr class="separator:af40585665f237aca4a3364726b3fdb1d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0922a8f5a7c082e9495e43a0fab365da"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a0922a8f5a7c082e9495e43a0fab365da">reset</a> (pointer __p=pointer()) noexcept</td></tr> <tr class="separator:a0922a8f5a7c082e9495e43a0fab365da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a20128902c397043453a90db55f4ea276"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a07967.html#a20128902c397043453a90db55f4ea276">swap</a> (<a class="el" href="a07967.html">unique_ptr</a> &__u) noexcept</td></tr> <tr class="separator:a20128902c397043453a90db55f4ea276"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><h3>template<typename _Tp, typename _Dp = default_delete<_Tp>><br /> class std::unique_ptr< _Tp, _Dp ></h3> <p>20.7.1.2 unique_ptr for single objects. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00168">168</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> <a id="a46c6ac3c3c51a2bf10ab8354043903fc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a46c6ac3c3c51a2bf10ab8354043903fc">◆ </a></span>unique_ptr() <span class="overload">[1/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <div class="memtemplate"> template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">constexpr <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Default constructor, creates a unique_ptr that owns nothing. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00194">194</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a9265d990e022b96ae4ffd50977a4ba58"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9265d990e022b96ae4ffd50977a4ba58">◆ </a></span>unique_ptr() <span class="overload">[2/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <div class="memtemplate"> template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype">pointer </td> <td class="paramname"><em>__p</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Takes ownership of a pointer.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__p</td><td>A pointer to an object of <code>element_type</code> </td></tr> </table> </dd> </dl> <p>The deleter will be value-initialized. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00207">207</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="aed2b83027dddfc25ead0747f819ee644"></a> <h2 class="memtitle"><span class="permalink"><a href="#aed2b83027dddfc25ead0747f819ee644">◆ </a></span>unique_ptr() <span class="overload">[3/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype">pointer </td> <td class="paramname"><em>__p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">typename <a class="el" href="a03047.html">conditional</a>< <a class="el" href="a03399.html">is_reference</a>< deleter_type >::value, deleter_type, const deleter_type & >::type </td> <td class="paramname"><em>__d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Takes ownership of a pointer.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__p</td><td>A pointer to an object of <code>element_type</code> </td></tr> <tr><td class="paramname">__d</td><td>A reference to a deleter.</td></tr> </table> </dd> </dl> <p>The deleter will be initialized with <code>__d</code> </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00218">218</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="accf546c02774a8a3fb3d878fe6259059"></a> <h2 class="memtitle"><span class="permalink"><a href="#accf546c02774a8a3fb3d878fe6259059">◆ </a></span>unique_ptr() <span class="overload">[4/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype">pointer </td> <td class="paramname"><em>__p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">typename <a class="el" href="a03935.html">remove_reference</a>< deleter_type >::type && </td> <td class="paramname"><em>__d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Takes ownership of a pointer.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__p</td><td>A pointer to an object of <code>element_type</code> </td></tr> <tr><td class="paramname">__d</td><td>An rvalue reference to a deleter.</td></tr> </table> </dd> </dl> <p>The deleter will be initialized with <code>std::move(__d)</code> </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00230">230</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="af220c0835cdc6d384018d8e53b430142"></a> <h2 class="memtitle"><span class="permalink"><a href="#af220c0835cdc6d384018d8e53b430142">◆ </a></span>unique_ptr() <span class="overload">[5/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <div class="memtemplate"> template<typename _Up = _Dp, typename = _DeleterConstraint<_Up>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">constexpr <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype">nullptr_t </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Creates a unique_ptr that owns nothing. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00239">239</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a3d0c5c99ab01ee8a1581c4533e60a56a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3d0c5c99ab01ee8a1581c4533e60a56a">◆ </a></span>unique_ptr() <span class="overload">[6/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype"><a class="el" href="a07967.html">unique_ptr</a>< _Tp, _Dp > && </td> <td class="paramname"><em>__u</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Move constructor. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00244">244</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a2fb272347a3713d3fc8f99efd0e84c74"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2fb272347a3713d3fc8f99efd0e84c74">◆ </a></span>unique_ptr() <span class="overload">[7/7]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <div class="memtemplate"> template<typename _Up , typename _Ep , typename = _Require< __safe_conversion_up<_Up, _Ep>, typename conditional<is_reference<_Dp>::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>::type>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramtype"><a class="el" href="a07967.html">unique_ptr</a>< _Up, _Ep > && </td> <td class="paramname"><em>__u</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Converting constructor from another type. </p> <p>Requires that the pointer owned by <code>__u</code> is convertible to the type of pointer owned by this object, <code>__u</code> does not own an array, and <code>__u</code> has a compatible deleter type. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00258">258</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a934c3a2895f4ad9b413ee9132e949e81"></a> <h2 class="memtitle"><span class="permalink"><a href="#a934c3a2895f4ad9b413ee9132e949e81">◆ </a></span>~unique_ptr()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::~<a class="el" href="a07967.html">unique_ptr</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Destructor, invokes the deleter if the stored pointer is not null. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00273">273</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a id="ae29eb2b7c551c69c98995fc04f895781"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae29eb2b7c551c69c98995fc04f895781">◆ </a></span>get()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">pointer <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::get </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Return the stored pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00345">345</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00620_source.html#l00359">std::unique_ptr< _Result< _Res > >::operator bool()</a>, <a class="el" href="a00620_source.html#l00611">std::unique_ptr< _Tp[], _Dp >::operator bool()</a>, <a class="el" href="a00620_source.html#l00366">std::unique_ptr< _Result< _Res > >::release()</a>, and <a class="el" href="a00620_source.html#l00618">std::unique_ptr< _Tp[], _Dp >::release()</a>.</p> </div> </div> <a id="a62f850d198437890dffea7a4e029602d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a62f850d198437890dffea7a4e029602d">◆ </a></span>get_deleter() <span class="overload">[1/2]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">deleter_type& <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::get_deleter </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Return a reference to the stored deleter. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00350">350</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00620_source.html#l00290">std::unique_ptr< _Result< _Res > >::operator=()</a>, <a class="el" href="a00620_source.html#l00550">std::unique_ptr< _Tp[], _Dp >::operator=()</a>, <a class="el" href="a00620_source.html#l00380">std::unique_ptr< _Result< _Res > >::reset()</a>, <a class="el" href="a00620_source.html#l00644">std::unique_ptr< _Tp[], _Dp >::reset()</a>, <a class="el" href="a00620_source.html#l00273">std::unique_ptr< _Result< _Res > >::~unique_ptr()</a>, and <a class="el" href="a00620_source.html#l00533">std::unique_ptr< _Tp[], _Dp >::~unique_ptr()</a>.</p> </div> </div> <a id="a0ce41e4825268546e4f1ecf5f5259af0"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0ce41e4825268546e4f1ecf5f5259af0">◆ </a></span>get_deleter() <span class="overload">[2/2]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const deleter_type& <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::get_deleter </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Return a reference to the stored deleter. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00355">355</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a9f21c10165ad856c5b6b2889b815a9bf"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9f21c10165ad856c5b6b2889b815a9bf">◆ </a></span>operator bool()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator bool </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Return <code>true</code> if the stored pointer is not null. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00359">359</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a8e080072591682c8d1fb2bf468f51188"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8e080072591682c8d1fb2bf468f51188">◆ </a></span>operator*()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a03955.html">add_lvalue_reference</a><element_type>::type <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator* </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Dereference the stored pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00329">329</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="ad0486e6ff29eac8f1384948a4184e442"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad0486e6ff29eac8f1384948a4184e442">◆ </a></span>operator->()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">pointer <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator-> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Return the stored pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00337">337</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a0d690f8c5fd6b05f0ceb1dc04d79c821"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0d690f8c5fd6b05f0ceb1dc04d79c821">◆ </a></span>operator=() <span class="overload">[1/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">unique_ptr</a>& <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator= </td> <td>(</td> <td class="paramtype"><a class="el" href="a07967.html">unique_ptr</a>< _Tp, _Dp > && </td> <td class="paramname"><em>__u</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Move assignment operator. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__u</td><td>The object to transfer ownership from.</td></tr> </table> </dd> </dl> <p>Invokes the deleter first if this object owns a pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00290">290</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="ada7596fc9242151849616db656f4224e"></a> <h2 class="memtitle"><span class="permalink"><a href="#ada7596fc9242151849616db656f4224e">◆ </a></span>operator=() <span class="overload">[2/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <div class="memtemplate"> template<typename _Up , typename _Ep > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a04191.html">enable_if</a>< __and_< __safe_conversion_up<_Up, _Ep>, <a class="el" href="a03683.html">is_assignable</a><deleter_type&, _Ep&&> >::value, <a class="el" href="a07967.html">unique_ptr</a>&>::type <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator= </td> <td>(</td> <td class="paramtype"><a class="el" href="a07967.html">unique_ptr</a>< _Up, _Ep > && </td> <td class="paramname"><em>__u</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Assignment from another type. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__u</td><td>The object to transfer ownership from, which owns a convertible pointer to a non-array object.</td></tr> </table> </dd> </dl> <p>Invokes the deleter first if this object owns a pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00310">310</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a53f23836b9dcfc3558e768d48969a903"></a> <h2 class="memtitle"><span class="permalink"><a href="#a53f23836b9dcfc3558e768d48969a903">◆ </a></span>operator=() <span class="overload">[3/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a07967.html">unique_ptr</a>& <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::operator= </td> <td>(</td> <td class="paramtype">nullptr_t </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Reset the unique_ptr to empty, invoking the deleter if necessary. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00319">319</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="af40585665f237aca4a3364726b3fdb1d"></a> <h2 class="memtitle"><span class="permalink"><a href="#af40585665f237aca4a3364726b3fdb1d">◆ </a></span>release()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">pointer <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::release </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Release ownership of any stored pointer. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00366">366</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> </div> </div> <a id="a0922a8f5a7c082e9495e43a0fab365da"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0922a8f5a7c082e9495e43a0fab365da">◆ </a></span>reset()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::reset </td> <td>(</td> <td class="paramtype">pointer </td> <td class="paramname"><em>__p</em> = <code>pointer()</code></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Replace the stored pointer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__p</td><td>The new pointer to store.</td></tr> </table> </dd> </dl> <p>The deleter will be invoked if a pointer is already owned. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00380">380</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00620_source.html#l00290">std::unique_ptr< _Result< _Res > >::operator=()</a>, and <a class="el" href="a00620_source.html#l00550">std::unique_ptr< _Tp[], _Dp >::operator=()</a>.</p> </div> </div> <a id="a20128902c397043453a90db55f4ea276"></a> <h2 class="memtitle"><span class="permalink"><a href="#a20128902c397043453a90db55f4ea276">◆ </a></span>swap()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp, typename _Dp = default_delete<_Tp>> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="a07967.html">std::unique_ptr</a>< _Tp, _Dp >::swap </td> <td>(</td> <td class="paramtype"><a class="el" href="a07967.html">unique_ptr</a>< _Tp, _Dp > & </td> <td class="paramname"><em>__u</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Exchange the pointer and deleter with another object. </p> <p class="definition">Definition at line <a class="el" href="a00620_source.html#l00390">390</a> of file <a class="el" href="a00620_source.html">unique_ptr.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00620_source.html#l00380">std::unique_ptr< _Result< _Res > >::reset()</a>, and <a class="el" href="a00620_source.html#l00644">std::unique_ptr< _Tp[], _Dp >::reset()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="a00620_source.html">unique_ptr.h</a></li> <li><a class="el" href="a00722_source.html">auto_ptr.h</a></li> </ul> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="a01541.html">std</a></li><li class="navelem"><a class="el" href="a07967.html">unique_ptr</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li> </ul> </div> </body> </html>