<!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::allocator_traits< _Alloc > Struct 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('a04636.html','');}); /* @license-end */ </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pro-types">Protected Types</a> | <a href="a04633.html">List of all members</a> </div> <div class="headertitle"> <div class="title">std::allocator_traits< _Alloc > Struct Template Reference<div class="ingroups"><a class="el" href="a01477.html">Utilities</a> » <a class="el" href="a01471.html">Memory</a> » <a class="el" href="a01490.html">Allocators</a></div></div> </div> </div><!--header--> <div class="contents"> <div class="dynheader"> Inheritance diagram for std::allocator_traits< _Alloc >:</div> <div class="dyncontent"> <div class="center"><iframe scrolling="no" frameborder="0" src="a04635.svg" width="139" height="136"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe> </div> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <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:afca1125c7f138bdffa1fda17a5181429"><td class="memItemLeft" align="right" valign="top">typedef _Alloc </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#afca1125c7f138bdffa1fda17a5181429">allocator_type</a></td></tr> <tr class="separator:afca1125c7f138bdffa1fda17a5181429"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a841791873537638dfc36c80ecc98bc48"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a841791873537638dfc36c80ecc98bc48">const_pointer</a> = typename _Ptr< __c_pointer, const <a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a> >::type</td></tr> <tr class="separator:a841791873537638dfc36c80ecc98bc48"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5a9cb47519e4840523e38e45cf56bf1d"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a5a9cb47519e4840523e38e45cf56bf1d">const_void_pointer</a> = typename _Ptr< __cv_pointer, const void >::type</td></tr> <tr class="separator:a5a9cb47519e4840523e38e45cf56bf1d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a653e076069bf6f57a6b09ca015d56a4e"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a653e076069bf6f57a6b09ca015d56a4e">difference_type</a> = typename _Diff< _Alloc, <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> >::type</td></tr> <tr class="separator:a653e076069bf6f57a6b09ca015d56a4e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afae6957b1a6d68084b2b6114dff01ae8"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#afae6957b1a6d68084b2b6114dff01ae8">is_always_equal</a> = __detected_or_t< typename <a class="el" href="a03480.html">is_empty</a>< _Alloc >::type, __equal, _Alloc ></td></tr> <tr class="separator:afae6957b1a6d68084b2b6114dff01ae8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4931a231115cbef628c29b147a7d7336"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> = __detected_or_t< <a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a> *, __pointer, _Alloc ></td></tr> <tr class="separator:a4931a231115cbef628c29b147a7d7336"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acd5ad3d84299a655ad2c59e2345b7796"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#acd5ad3d84299a655ad2c59e2345b7796">propagate_on_container_copy_assignment</a> = __detected_or_t< <a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocca, _Alloc ></td></tr> <tr class="separator:acd5ad3d84299a655ad2c59e2345b7796"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1db75f5aec19020544743134c961f607"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a1db75f5aec19020544743134c961f607">propagate_on_container_move_assignment</a> = __detected_or_t< <a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocma, _Alloc ></td></tr> <tr class="separator:a1db75f5aec19020544743134c961f607"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adad7997e545350e38d1b44d01568741a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#adad7997e545350e38d1b44d01568741a">propagate_on_container_swap</a> = __detected_or_t< <a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocs, _Alloc ></td></tr> <tr class="separator:adad7997e545350e38d1b44d01568741a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a42c8b19d368aeb5f431d8cdc499aaf9c"><td class="memTemplParams" colspan="2"><a id="a42c8b19d368aeb5f431d8cdc499aaf9c"></a> template<typename _Tp > </td></tr> <tr class="memitem:a42c8b19d368aeb5f431d8cdc499aaf9c"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>rebind_alloc</b> = __alloc_rebind< _Alloc, _Tp ></td></tr> <tr class="separator:a42c8b19d368aeb5f431d8cdc499aaf9c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a04a8dd851f0d8effccc0a7c0f2e60f3e"><td class="memTemplParams" colspan="2"><a id="a04a8dd851f0d8effccc0a7c0f2e60f3e"></a> template<typename _Tp > </td></tr> <tr class="memitem:a04a8dd851f0d8effccc0a7c0f2e60f3e"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>rebind_traits</b> = <a class="el" href="a04636.html">allocator_traits</a>< rebind_alloc< _Tp > ></td></tr> <tr class="separator:a04a8dd851f0d8effccc0a7c0f2e60f3e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a528d5c1afff59af1a90aa9273dddb806"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> = typename _Size< _Alloc, <a class="el" href="a04636.html#a653e076069bf6f57a6b09ca015d56a4e">difference_type</a> >::type</td></tr> <tr class="separator:a528d5c1afff59af1a90aa9273dddb806"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa51dca0f6ab162918c10679e8feb57df"><td class="memItemLeft" align="right" valign="top">typedef _Alloc::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a></td></tr> <tr class="separator:aa51dca0f6ab162918c10679e8feb57df"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a242e530b7ee8e5d17a017983cc7cc705"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a242e530b7ee8e5d17a017983cc7cc705">void_pointer</a> = typename _Ptr< __v_pointer, void >::type</td></tr> <tr class="separator:a242e530b7ee8e5d17a017983cc7cc705"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr class="memitem:a1afbf725286c9e82ba6166dcc04b10bc"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a1afbf725286c9e82ba6166dcc04b10bc">allocate</a> (_Alloc &__a, <a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> __n)</td></tr> <tr class="separator:a1afbf725286c9e82ba6166dcc04b10bc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a79296fdf0f48ef0a49f2d5de6193f867"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a79296fdf0f48ef0a49f2d5de6193f867">allocate</a> (_Alloc &__a, <a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> __n, <a class="el" href="a04636.html#a5a9cb47519e4840523e38e45cf56bf1d">const_void_pointer</a> __hint)</td></tr> <tr class="separator:a79296fdf0f48ef0a49f2d5de6193f867"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aad7d7b8604439d1ecf953a1b9a426e7b"><td class="memTemplParams" colspan="2">template<typename _Tp , typename... _Args> </td></tr> <tr class="memitem:aad7d7b8604439d1ecf953a1b9a426e7b"><td class="memTemplItemLeft" align="right" valign="top">static auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a04636.html#aad7d7b8604439d1ecf953a1b9a426e7b">construct</a> (_Alloc &__a, _Tp *__p, _Args &&... __args) -> decltype(_S_construct(__a, __p, <a class="el" href="a01477.html#gacb5baec338e12b99cb6bddea7506c7c6">std::forward</a>< _Args >(__args)...))</td></tr> <tr class="separator:aad7d7b8604439d1ecf953a1b9a426e7b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae5f6b86b98b17e2ba39243ca8eaf4ee1"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#ae5f6b86b98b17e2ba39243ca8eaf4ee1">deallocate</a> (_Alloc &__a, <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> __p, <a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> __n)</td></tr> <tr class="separator:ae5f6b86b98b17e2ba39243ca8eaf4ee1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac73f3d164cf01c9d61b44d42c30db3d3"><td class="memTemplParams" colspan="2">template<typename _Tp > </td></tr> <tr class="memitem:ac73f3d164cf01c9d61b44d42c30db3d3"><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a04636.html#ac73f3d164cf01c9d61b44d42c30db3d3">destroy</a> (_Alloc &__a, _Tp *__p)</td></tr> <tr class="separator:ac73f3d164cf01c9d61b44d42c30db3d3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a29c306bcb6a7676a516430a0e50b990a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#a29c306bcb6a7676a516430a0e50b990a">max_size</a> (const _Alloc &__a) noexcept</td></tr> <tr class="separator:a29c306bcb6a7676a516430a0e50b990a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac324d9065f45f7ae2dd1e0014c73f218"><td class="memItemLeft" align="right" valign="top">static _Alloc </td><td class="memItemRight" valign="bottom"><a class="el" href="a04636.html#ac324d9065f45f7ae2dd1e0014c73f218">select_on_container_copy_construction</a> (const _Alloc &__rhs)</td></tr> <tr class="separator:ac324d9065f45f7ae2dd1e0014c73f218"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a> Protected Types</h2></td></tr> <tr class="memitem:afe7e14f56d1fa347cd3f6f33308b34a7"><td class="memTemplParams" colspan="2"><a id="afe7e14f56d1fa347cd3f6f33308b34a7"></a> template<typename _Tp > </td></tr> <tr class="memitem:afe7e14f56d1fa347cd3f6f33308b34a7"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__c_pointer</b> = typename _Tp::const_pointer</td></tr> <tr class="separator:afe7e14f56d1fa347cd3f6f33308b34a7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa65febc0947a349f08a9e62b819c8f9d"><td class="memTemplParams" colspan="2"><a id="aa65febc0947a349f08a9e62b819c8f9d"></a> template<typename _Tp > </td></tr> <tr class="memitem:aa65febc0947a349f08a9e62b819c8f9d"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__cv_pointer</b> = typename _Tp::const_void_pointer</td></tr> <tr class="separator:aa65febc0947a349f08a9e62b819c8f9d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9c6d5030f694b4d2e985865518b58a8a"><td class="memTemplParams" colspan="2"><a id="a9c6d5030f694b4d2e985865518b58a8a"></a> template<typename _Tp > </td></tr> <tr class="memitem:a9c6d5030f694b4d2e985865518b58a8a"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__equal</b> = typename _Tp::is_always_equal</td></tr> <tr class="separator:a9c6d5030f694b4d2e985865518b58a8a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6e316baa8e2d36e3d5e43bf84572edbc"><td class="memTemplParams" colspan="2"><a id="a6e316baa8e2d36e3d5e43bf84572edbc"></a> template<typename _Tp > </td></tr> <tr class="memitem:a6e316baa8e2d36e3d5e43bf84572edbc"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__pocca</b> = typename _Tp::propagate_on_container_copy_assignment</td></tr> <tr class="separator:a6e316baa8e2d36e3d5e43bf84572edbc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa00e8f324f2415c69d89ccfce7835f23"><td class="memTemplParams" colspan="2"><a id="aa00e8f324f2415c69d89ccfce7835f23"></a> template<typename _Tp > </td></tr> <tr class="memitem:aa00e8f324f2415c69d89ccfce7835f23"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__pocma</b> = typename _Tp::propagate_on_container_move_assignment</td></tr> <tr class="separator:aa00e8f324f2415c69d89ccfce7835f23"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5f61d035f2854b7df02813bb37d642a2"><td class="memTemplParams" colspan="2"><a id="a5f61d035f2854b7df02813bb37d642a2"></a> template<typename _Tp > </td></tr> <tr class="memitem:a5f61d035f2854b7df02813bb37d642a2"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__pocs</b> = typename _Tp::propagate_on_container_swap</td></tr> <tr class="separator:a5f61d035f2854b7df02813bb37d642a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1208f774911629769d720ad2f88574e5"><td class="memTemplParams" colspan="2"><a id="a1208f774911629769d720ad2f88574e5"></a> template<typename _Tp > </td></tr> <tr class="memitem:a1208f774911629769d720ad2f88574e5"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__pointer</b> = typename _Tp::pointer</td></tr> <tr class="separator:a1208f774911629769d720ad2f88574e5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acbe2f8f76691f4a70ec00d29d28f72b2"><td class="memTemplParams" colspan="2"><a id="acbe2f8f76691f4a70ec00d29d28f72b2"></a> template<typename _Tp > </td></tr> <tr class="memitem:acbe2f8f76691f4a70ec00d29d28f72b2"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>__v_pointer</b> = typename _Tp::void_pointer</td></tr> <tr class="separator:acbe2f8f76691f4a70ec00d29d28f72b2"><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 _Alloc><br /> struct std::allocator_traits< _Alloc ></h3> <p>Uniform interface to all allocator types. </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00083">83</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div><h2 class="groupheader">Member Typedef Documentation</h2> <a id="afca1125c7f138bdffa1fda17a5181429"></a> <h2 class="memtitle"><span class="permalink"><a href="#afca1125c7f138bdffa1fda17a5181429">◆ </a></span>allocator_type</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">typedef _Alloc <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#afca1125c7f138bdffa1fda17a5181429">allocator_type</a></td> </tr> </table> </div><div class="memdoc"> <p>The allocator type. </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00086">86</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a841791873537638dfc36c80ecc98bc48"></a> <h2 class="memtitle"><span class="permalink"><a href="#a841791873537638dfc36c80ecc98bc48">◆ </a></span>const_pointer</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a841791873537638dfc36c80ecc98bc48">const_pointer</a> = typename _Ptr<__c_pointer, const <a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a>>::type</td> </tr> </table> </div><div class="memdoc"> <p>The allocator's const pointer type. </p> <p><code>Alloc::const_pointer</code> if that type exists, otherwise <code> pointer_traits<pointer>::rebind<const value_type> </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00135">135</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a5a9cb47519e4840523e38e45cf56bf1d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5a9cb47519e4840523e38e45cf56bf1d">◆ </a></span>const_void_pointer</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a5a9cb47519e4840523e38e45cf56bf1d">const_void_pointer</a> = typename _Ptr<__cv_pointer, const void>::type</td> </tr> </table> </div><div class="memdoc"> <p>The allocator's const void pointer type. </p> <p><code>Alloc::const_void_pointer</code> if that type exists, otherwise <code> pointer_traits<pointer>::rebind<const void> </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00151">151</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a653e076069bf6f57a6b09ca015d56a4e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a653e076069bf6f57a6b09ca015d56a4e">◆ </a></span>difference_type</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a653e076069bf6f57a6b09ca015d56a4e">difference_type</a> = typename _Diff<_Alloc, <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a>>::type</td> </tr> </table> </div><div class="memdoc"> <p>The allocator's difference type. </p> <p><code>Alloc::difference_type</code> if that type exists, otherwise <code> pointer_traits<pointer>::difference_type </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00159">159</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="afae6957b1a6d68084b2b6114dff01ae8"></a> <h2 class="memtitle"><span class="permalink"><a href="#afae6957b1a6d68084b2b6114dff01ae8">◆ </a></span>is_always_equal</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#afae6957b1a6d68084b2b6114dff01ae8">is_always_equal</a> = __detected_or_t<typename <a class="el" href="a03480.html">is_empty</a><_Alloc>::type, __equal, _Alloc></td> </tr> </table> </div><div class="memdoc"> <p>Whether all instances of the allocator type compare equal. </p> <p><code>Alloc::is_always_equal</code> if that type exists, otherwise <code>is_empty<Alloc>::type</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00203">203</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a4931a231115cbef628c29b147a7d7336"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4931a231115cbef628c29b147a7d7336">◆ </a></span>pointer</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> = __detected_or_t<<a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a>*, __pointer, _Alloc></td> </tr> </table> </div><div class="memdoc"> <p>The allocator's pointer type. </p> <p><code>Alloc::pointer</code> if that type exists, otherwise <code>value_type*</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00095">95</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="acd5ad3d84299a655ad2c59e2345b7796"></a> <h2 class="memtitle"><span class="permalink"><a href="#acd5ad3d84299a655ad2c59e2345b7796">◆ </a></span>propagate_on_container_copy_assignment</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#acd5ad3d84299a655ad2c59e2345b7796">propagate_on_container_copy_assignment</a> = __detected_or_t<<a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocca, _Alloc></td> </tr> </table> </div><div class="memdoc"> <p>How the allocator is propagated on copy assignment. </p> <p><code>Alloc::propagate_on_container_copy_assignment</code> if that type exists, otherwise <code>false_type</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00176">176</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a1db75f5aec19020544743134c961f607"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1db75f5aec19020544743134c961f607">◆ </a></span>propagate_on_container_move_assignment</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a1db75f5aec19020544743134c961f607">propagate_on_container_move_assignment</a> = __detected_or_t<<a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocma, _Alloc></td> </tr> </table> </div><div class="memdoc"> <p>How the allocator is propagated on move assignment. </p> <p><code>Alloc::propagate_on_container_move_assignment</code> if that type exists, otherwise <code>false_type</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00185">185</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="adad7997e545350e38d1b44d01568741a"></a> <h2 class="memtitle"><span class="permalink"><a href="#adad7997e545350e38d1b44d01568741a">◆ </a></span>propagate_on_container_swap</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#adad7997e545350e38d1b44d01568741a">propagate_on_container_swap</a> = __detected_or_t<<a class="el" href="a01476.html#gaebe6729ab5488ecc76c762873d226857">false_type</a>, __pocs, _Alloc></td> </tr> </table> </div><div class="memdoc"> <p>How the allocator is propagated on swap. </p> <p><code>Alloc::propagate_on_container_swap</code> if that type exists, otherwise <code>false_type</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00194">194</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a528d5c1afff59af1a90aa9273dddb806"></a> <h2 class="memtitle"><span class="permalink"><a href="#a528d5c1afff59af1a90aa9273dddb806">◆ </a></span>size_type</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> = typename _Size<_Alloc, <a class="el" href="a04636.html#a653e076069bf6f57a6b09ca015d56a4e">difference_type</a>>::type</td> </tr> </table> </div><div class="memdoc"> <p>The allocator's size type. </p> <p><code>Alloc::size_type</code> if that type exists, otherwise <code> make_unsigned<difference_type>::type </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00167">167</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="aa51dca0f6ab162918c10679e8feb57df"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa51dca0f6ab162918c10679e8feb57df">◆ </a></span>value_type</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">typedef _Alloc::value_type <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#aa51dca0f6ab162918c10679e8feb57df">value_type</a></td> </tr> </table> </div><div class="memdoc"> <p>The allocated type. </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00088">88</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a242e530b7ee8e5d17a017983cc7cc705"></a> <h2 class="memtitle"><span class="permalink"><a href="#a242e530b7ee8e5d17a017983cc7cc705">◆ </a></span>void_pointer</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::<a class="el" href="a04636.html#a242e530b7ee8e5d17a017983cc7cc705">void_pointer</a> = typename _Ptr<__v_pointer, void>::type</td> </tr> </table> </div><div class="memdoc"> <p>The allocator's void pointer type. </p> <p><code>Alloc::void_pointer</code> if that type exists, otherwise <code> pointer_traits<pointer>::rebind<void> </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00143">143</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a id="a1afbf725286c9e82ba6166dcc04b10bc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1afbf725286c9e82ba6166dcc04b10bc">◆ </a></span>allocate() <span class="overload">[1/2]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::allocate </td> <td>(</td> <td class="paramtype">_Alloc & </td> <td class="paramname"><em>__a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> </td> <td class="paramname"><em>__n</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">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Allocate memory. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> <tr><td class="paramname">__n</td><td>The number of objects to allocate space for.</td></tr> </table> </dd> </dl> <p>Calls <code>a.allocate(n)</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00300">300</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00269_source.html#l00095">std::__allocate_guarded()</a>.</p> </div> </div> <a id="a79296fdf0f48ef0a49f2d5de6193f867"></a> <h2 class="memtitle"><span class="permalink"><a href="#a79296fdf0f48ef0a49f2d5de6193f867">◆ </a></span>allocate() <span class="overload">[2/2]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::allocate </td> <td>(</td> <td class="paramtype">_Alloc & </td> <td class="paramname"><em>__a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> </td> <td class="paramname"><em>__n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a04636.html#a5a9cb47519e4840523e38e45cf56bf1d">const_void_pointer</a> </td> <td class="paramname"><em>__hint</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">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Allocate memory. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> <tr><td class="paramname">__n</td><td>The number of objects to allocate space for. </td></tr> <tr><td class="paramname">__hint</td><td>Aid to locality. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Memory of suitable size and alignment for <em>n</em> objects of type <code>value_type</code> </dd></dl> <p>Returns <code> a.allocate(n, hint) </code> if that expression is well-formed, otherwise returns <code>a.allocate(n)</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00315">315</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="aad7d7b8604439d1ecf953a1b9a426e7b"></a> <h2 class="memtitle"><span class="permalink"><a href="#aad7d7b8604439d1ecf953a1b9a426e7b">◆ </a></span>construct()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <div class="memtemplate"> template<typename _Tp , typename... _Args> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static auto <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::construct </td> <td>(</td> <td class="paramtype">_Alloc & </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>__p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_Args &&... </td> <td class="paramname"><em>__args</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> -> decltype(_S_construct(__a, __p, <a class="el" href="a01477.html#gacb5baec338e12b99cb6bddea7506c7c6">std::forward</a><_Args>(__args)...)) </td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Construct an object of type <em>_Tp</em>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> <tr><td class="paramname">__p</td><td>Pointer to memory of suitable size and alignment for Tp </td></tr> <tr><td class="paramname">__args</td><td>Constructor arguments.</td></tr> </table> </dd> </dl> <p>Calls <code> __a.construct(__p, std::forward<Args>(__args)...) </code> if that expression is well-formed, otherwise uses placement-new to construct an object of type <em>_Tp</em> at location <em>__p</em> from the arguments <em>__args</em>... </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00342">342</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="ae5f6b86b98b17e2ba39243ca8eaf4ee1"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae5f6b86b98b17e2ba39243ca8eaf4ee1">◆ </a></span>deallocate()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static void <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::deallocate </td> <td>(</td> <td class="paramtype">_Alloc & </td> <td class="paramname"><em>__a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a04636.html#a4931a231115cbef628c29b147a7d7336">pointer</a> </td> <td class="paramname"><em>__p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> </td> <td class="paramname"><em>__n</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">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Deallocate memory. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> <tr><td class="paramname">__p</td><td>Pointer to the memory to deallocate. </td></tr> <tr><td class="paramname">__n</td><td>The number of objects space was allocated for.</td></tr> </table> </dd> </dl> <p>Calls <code> a.deallocate(p, n) </code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00327">327</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00269_source.html#l00070">std::__allocated_ptr< _Alloc >::~__allocated_ptr()</a>.</p> </div> </div> <a id="ac73f3d164cf01c9d61b44d42c30db3d3"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac73f3d164cf01c9d61b44d42c30db3d3">◆ </a></span>destroy()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <div class="memtemplate"> template<typename _Tp > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static void <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::destroy </td> <td>(</td> <td class="paramtype">_Alloc & </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>__p</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">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Destroy an object of type <em>_Tp</em>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> <tr><td class="paramname">__p</td><td>Pointer to the object to destroy</td></tr> </table> </dd> </dl> <p>Calls <code>__a.destroy(__p)</code> if that expression is well-formed, otherwise calls <code>__p->~_Tp()</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00355">355</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <a id="a29c306bcb6a7676a516430a0e50b990a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a29c306bcb6a7676a516430a0e50b990a">◆ </a></span>max_size()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="a04636.html#a528d5c1afff59af1a90aa9273dddb806">size_type</a> <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::max_size </td> <td>(</td> <td class="paramtype">const _Alloc & </td> <td class="paramname"><em>__a</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">noexcept</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>The maximum supported allocation size. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__a</td><td>An allocator. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><code>__a.max_size()</code> or <code>numeric_limits<size_type>::max()</code> </dd></dl> <p>Returns <code>__a.max_size()</code> if that expression is well-formed, otherwise returns <code>numeric_limits<size_type>::max()</code> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00366">366</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> <p class="reference">Referenced by <a class="el" href="a00335_source.html#l00790">std::forward_list< _Tp, _Alloc >::max_size()</a>, and <a class="el" href="a00557_source.html#l01073">std::list< __inp, __rebind_inp >::max_size()</a>.</p> </div> </div> <a id="ac324d9065f45f7ae2dd1e0014c73f218"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac324d9065f45f7ae2dd1e0014c73f218">◆ </a></span>select_on_container_copy_construction()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename _Alloc> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static _Alloc <a class="el" href="a04636.html">std::allocator_traits</a>< _Alloc >::select_on_container_copy_construction </td> <td>(</td> <td class="paramtype">const _Alloc & </td> <td class="paramname"><em>__rhs</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Obtain an allocator to use when copying a container. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">__rhs</td><td>An allocator. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><code>__rhs.select_on_container_copy_construction()</code> or <em>__rhs</em> </dd></dl> <p>Returns <code>__rhs.select_on_container_copy_construction()</code> if that expression is well-formed, otherwise returns <em>__rhs</em> </p> <p class="definition">Definition at line <a class="el" href="a16473_source.html#l00378">378</a> of file <a class="el" href="a16473_source.html">bits/alloc_traits.h</a>.</p> </div> </div> <hr/>The documentation for this struct was generated from the following file:<ul> <li><a class="el" href="a16473_source.html">bits/alloc_traits.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="a01538.html">std</a></li><li class="navelem"><a class="el" href="a04636.html">allocator_traits</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>