<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.3"/> <title>libstdc++: Utilities</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="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); $(window).load(resizeHeight); </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 style="padding-left: 0.5em;"> <div id="projectname">libstdc++ </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3 --> </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"> $(document).ready(function(){initNavTree('a01643.html','');}); </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#groups">Modules</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Utilities</div> </div> </div><!--header--> <div class="contents"> <div class="dynheader"> Collaboration diagram for Utilities:</div> <div class="dyncontent"> <center><table><tr><td><img src="a01643.png" border="0" alt="" usemap="#a01643"/> <map name="a01643" id="a01643"> <area shape="rect" id="node2" href="a01640.html" title="Rational Arithmetic" alt="" coords="128,5,253,30"/><area shape="rect" id="node3" href="a01631.html" title="Time" alt="" coords="166,54,215,79"/><area shape="rect" id="node4" href="a01642.html" title="Metaprogramming and\l type traits" alt="" coords="117,103,264,142"/><area shape="rect" id="node5" href="a01657.html" title="Function Objects" alt="" coords="134,166,247,191"/><area shape="rect" id="node6" href="a01636.html" title="Memory" alt="" coords="157,215,224,241"/></map> </td></tr></table></center> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a> Modules</h2></td></tr> <tr class="memitem:a01657"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a01657.html">Function Objects</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a01636"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a01636.html">Memory</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a01642"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a01642.html">Metaprogramming and type traits</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a01640"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a01640.html">Rational Arithmetic</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a01631"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a01631.html">Time</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gad66b096e6b2754b94943e989481dca57"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:gad66b096e6b2754b94943e989481dca57"><td class="memTemplItemLeft" align="right" valign="top">_Tp * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#gad66b096e6b2754b94943e989481dca57">std::__addressof</a> (_Tp &__r) _GLIBCXX_NOEXCEPT</td></tr> <tr class="separator:gad66b096e6b2754b94943e989481dca57"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafb3bb408fa78728142a592273108e206"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:gafb3bb408fa78728142a592273108e206"><td class="memTemplItemLeft" align="right" valign="top">_Tp * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#gafb3bb408fa78728142a592273108e206">std::addressof</a> (_Tp &__r) noexcept</td></tr> <tr class="separator:gafb3bb408fa78728142a592273108e206"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga10fbc79dd34faf3bdfb42403452b83d5"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:ga10fbc79dd34faf3bdfb42403452b83d5"><td class="memTemplItemLeft" align="right" valign="top">add_rvalue_reference< _Tp >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#ga10fbc79dd34faf3bdfb42403452b83d5">std::declval</a> () noexcept</td></tr> <tr class="separator:ga10fbc79dd34faf3bdfb42403452b83d5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacb5baec338e12b99cb6bddea7506c7c6"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:gacb5baec338e12b99cb6bddea7506c7c6"><td class="memTemplItemLeft" align="right" valign="top">constexpr _Tp && </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#gacb5baec338e12b99cb6bddea7506c7c6">std::forward</a> (typename <a class="el" href="a00904.html">std::remove_reference</a>< _Tp >::type &__t) noexcept</td></tr> <tr class="separator:gacb5baec338e12b99cb6bddea7506c7c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gade8e8737b971a056c0ebba2de0295467"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:gade8e8737b971a056c0ebba2de0295467"><td class="memTemplItemLeft" align="right" valign="top">constexpr _Tp && </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#gade8e8737b971a056c0ebba2de0295467">std::forward</a> (typename <a class="el" href="a00904.html">std::remove_reference</a>< _Tp >::type &&__t) noexcept</td></tr> <tr class="separator:gade8e8737b971a056c0ebba2de0295467"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9f81219bfbfaac50d44f79095a639620"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:ga9f81219bfbfaac50d44f79095a639620"><td class="memTemplItemLeft" align="right" valign="top">constexpr <br class="typebreak"/> <a class="el" href="a00904.html">std::remove_reference</a>< _Tp ><br class="typebreak"/> ::type && </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#ga9f81219bfbfaac50d44f79095a639620">std::move</a> (_Tp &&__t) noexcept</td></tr> <tr class="separator:ga9f81219bfbfaac50d44f79095a639620"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaebb3526f677f19d5eef1b5e5aebecf30"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:gaebb3526f677f19d5eef1b5e5aebecf30"><td class="memTemplItemLeft" align="right" valign="top">conditional<br class="typebreak"/> < __move_if_noexcept_cond< _Tp ><br class="typebreak"/> ::value, const _Tp &, _Tp && ><br class="typebreak"/> ::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#gaebb3526f677f19d5eef1b5e5aebecf30">std::move_if_noexcept</a> (_Tp &__x) noexcept</td></tr> <tr class="separator:gaebb3526f677f19d5eef1b5e5aebecf30"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga142d5df80470242c6f42acdc11e3b1f8"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:ga142d5df80470242c6f42acdc11e3b1f8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#ga142d5df80470242c6f42acdc11e3b1f8">std::swap</a> (_Tp &__a, _Tp &__b) noexcept(__and_< is_nothrow_move_constructible< _Tp >,is_nothrow_move_assignable< _Tp >>::value)</td></tr> <tr class="separator:ga142d5df80470242c6f42acdc11e3b1f8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga05e1ab066889a6054ff5a6c95f4eca29"><td class="memTemplParams" colspan="2">template<typename _Tp , size_t _Nm> </td></tr> <tr class="memitem:ga05e1ab066889a6054ff5a6c95f4eca29"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a01643.html#ga05e1ab066889a6054ff5a6c95f4eca29">std::swap</a> (_Tp(&__a)[_Nm], _Tp(&__b)[_Nm]) noexcept(noexcept(swap(*__a,*__b)))</td></tr> <tr class="separator:ga05e1ab066889a6054ff5a6c95f4eca29"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Components deemed generally useful. Includes pair, tuple, forward/move helpers, ratio, function object, metaprogramming and type traits, time, date, and memory functions. </p> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="gad66b096e6b2754b94943e989481dca57"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">_Tp* std::__addressof </td> <td>(</td> <td class="paramtype">_Tp & </td> <td class="paramname"><em>__r</em></td><td>)</td> <td></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>Same as C++11 <a class="el" href="a01643.html#gafb3bb408fa78728142a592273108e206" title="Returns the actual address of the object or function referenced by r, even in the presence of an over...">std::addressof</a>. </p> <p>Definition at line <a class="el" href="a01312_source.html#l00047">47</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> <p>Referenced by <a class="el" href="a01312_source.html#l00136">std::addressof()</a>, <a class="el" href="a01575_source.html#l01185">std::begin()</a>, <a class="el" href="a01514_source.html#l00858">std::vector< sub_match< _Bi_iter >, allocator< sub_match< _Bi_iter > > >::data()</a>, <a class="el" href="a01575_source.html#l01205">std::end()</a>, <a class="el" href="a01197_source.html#l00292">std::forward_list< _Tp, _Alloc >::remove()</a>, and <a class="el" href="a01284_source.html#l00240">std::list< _Tp, _Alloc >::remove()</a>.</p> </div> </div> <a class="anchor" id="gafb3bb408fa78728142a592273108e206"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">_Tp* std::addressof </td> <td>(</td> <td class="paramtype">_Tp & </td> <td class="paramname"><em>__r</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>Returns the actual address of the object or function referenced by r, even in the presence of an overloaded operator&. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__r</td><td>Reference to an object or function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The actual address. </dd></dl> <p>Definition at line <a class="el" href="a01312_source.html#l00136">136</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> <p>References <a class="el" href="a01312_source.html#l00047">std::__addressof()</a>.</p> <p>Referenced by <a class="el" href="a01387_source.html#l00173">std::pointer_traits< _Tp * >::pointer_to()</a>.</p> </div> </div> <a class="anchor" id="ga10fbc79dd34faf3bdfb42403452b83d5"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">add_rvalue_reference< _Tp >::type std::declval </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>Utility to simplify expressions used in unevaluated operands. </p> <p>Definition at line <a class="el" href="a01553_source.html#l01774">1774</a> of file <a class="el" href="a01553_source.html">type_traits</a>.</p> </div> </div> <a class="anchor" id="gacb5baec338e12b99cb6bddea7506c7c6"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">constexpr _Tp&& std::forward </td> <td>(</td> <td class="paramtype">typename <a class="el" href="a00904.html">std::remove_reference</a>< _Tp >::type & </td> <td class="paramname"><em>__t</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Forward an lvalue. </p> <dl class="section return"><dt>Returns</dt><dd>The parameter cast to the specified type.</dd></dl> <p>This function is used to implement "perfect forwarding". </p> <p>Definition at line <a class="el" href="a01312_source.html#l00077">77</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> <a class="anchor" id="gade8e8737b971a056c0ebba2de0295467"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">constexpr _Tp&& std::forward </td> <td>(</td> <td class="paramtype">typename <a class="el" href="a00904.html">std::remove_reference</a>< _Tp >::type && </td> <td class="paramname"><em>__t</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Forward an rvalue. </p> <dl class="section return"><dt>Returns</dt><dd>The parameter cast to the specified type.</dd></dl> <p>This function is used to implement "perfect forwarding". </p> <p>Definition at line <a class="el" href="a01312_source.html#l00088">88</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> <a class="anchor" id="ga9f81219bfbfaac50d44f79095a639620"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">constexpr <a class="el" href="a00904.html">std::remove_reference</a><_Tp>::type&& std::move </td> <td>(</td> <td class="paramtype">_Tp && </td> <td class="paramname"><em>__t</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Convert a value to an rvalue. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__t</td><td>A thing of arbitrary type. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The parameter cast to an rvalue-reference to allow moving it. </dd></dl> <p>Definition at line <a class="el" href="a01312_source.html#l00102">102</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> <a class="anchor" id="gaebb3526f677f19d5eef1b5e5aebecf30"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type std::move_if_noexcept </td> <td>(</td> <td class="paramtype">_Tp & </td> <td class="paramname"><em>__x</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>Conditionally convert a value to an rvalue. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__x</td><td>A thing of arbitrary type. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The parameter, possibly cast to an rvalue-reference.</dd></dl> <p>Same as std::move unless the type's move constructor could throw and the type is copyable, in which case an lvalue-reference is returned instead. </p> <p>Definition at line <a class="el" href="a01312_source.html#l00122">122</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> <a class="anchor" id="ga142d5df80470242c6f42acdc11e3b1f8"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void std::swap </td> <td>(</td> <td class="paramtype">_Tp & </td> <td class="paramname"><em>__a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_Tp & </td> <td class="paramname"><em>__b</em> </td> </tr> <tr> <td></td> <td>)</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>Swaps two values. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>A thing of arbitrary type. </td></tr> <tr><td class="paramname">__b</td><td>Another thing of arbitrary type. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Nothing. </dd></dl> <p>Definition at line <a class="el" href="a01312_source.html#l00167">167</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> <a class="anchor" id="ga05e1ab066889a6054ff5a6c95f4eca29"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Tp , size_t _Nm> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void std::swap </td> <td>(</td> <td class="paramtype">_Tp(&) </td> <td class="paramname"><em>__a</em>[_Nm], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_Tp(&) </td> <td class="paramname"><em>__b</em>[_Nm] </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>Swap the contents of two arrays. </p> <p>Definition at line <a class="el" href="a01312_source.html#l00186">186</a> of file <a class="el" href="a01312_source.html">move.h</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3 </li> </ul> </div> </body> </html>