1 Star 0 Fork 0

mobangjack / memory

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
classfoonathan_1_1memory_1_1allocator__storage.html 46.37 KB
一键复制 编辑 原始数据 按行查看 历史
Jonathan Müller 提交于 2020-05-05 17:04 . Update documentation
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
<!-- HTML header for doxygen 1.8.16-->
<!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.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>memory: allocator_storage&lt; StoragePolicy, Mutex &gt; 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="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">memory
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="main-nav">
<ul class="sm sm-dox" id="main-menu">
<li><a href="index.html">Main Page</a></li>
<li><a href="md_doc_tutorial.html">Tutorial</a></li>
<li><a href="namespacefoonathan_1_1memory.html">Index</a></li>
<li><a href="files.html">Files</a></li>
</ul>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacefoonathan.html">foonathan</a></li><li class="navelem"><a class="el" href="namespacefoonathan_1_1memory.html">memory</a></li><li class="navelem"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Typedefs</a> &#124;
<a href="#pub-methods">Member Functions</a> </div>
<div class="headertitle">
<div class="title">allocator_storage&lt; StoragePolicy, Mutex &gt; Class Template Reference<div class="ingroups"><a class="el" href="group__storage.html">Allocator storage</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class StoragePolicy, class Mutex&gt;<br />
class foonathan::memory::allocator_storage&lt; StoragePolicy, Mutex &gt;</h3>
<p>A <a href="md_doc_concepts.html#concept_rawallocator">RawAllocator</a> that stores another allocator. </p>
<p>The <a href="md_doc_concepts.html#concept_storagepolicy">StoragePolicy</a> defines the allocator type being stored and how it is stored. The <code>Mutex</code> controls synchronization of the access. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Typedefs</h2></td></tr>
<tr class="memitem:abd368539d4750dc2ea909343eed521b2"><td class="memItemLeft" align="right" valign="top"><a id="abd368539d4750dc2ea909343eed521b2"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>allocator_type</b> = typename StoragePolicy::allocator_type</td></tr>
<tr class="separator:abd368539d4750dc2ea909343eed521b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9615e22334e493ec6ef1f8588966cb2c"><td class="memItemLeft" align="right" valign="top"><a id="a9615e22334e493ec6ef1f8588966cb2c"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>storage_policy</b> = StoragePolicy</td></tr>
<tr class="separator:a9615e22334e493ec6ef1f8588966cb2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a7a0dfdee0c83539ff9725f255c81ef"><td class="memItemLeft" align="right" valign="top"><a id="a4a7a0dfdee0c83539ff9725f255c81ef"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>mutex</b> = Mutex</td></tr>
<tr class="separator:a4a7a0dfdee0c83539ff9725f255c81ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecf829738ba45a0c47d96f529154baf0"><td class="memItemLeft" align="right" valign="top"><a id="aecf829738ba45a0c47d96f529154baf0"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>is_stateful</b> = typename traits::is_stateful</td></tr>
<tr class="separator:aecf829738ba45a0c47d96f529154baf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Member Functions</h2></td></tr>
<tr class="memitem:a2980916240030f41c8dba8ada4914027"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a2980916240030f41c8dba8ada4914027">allocator_storage</a> ()=default</td></tr>
<tr class="separator:a2980916240030f41c8dba8ada4914027"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b5d119f98602a5ae23eb5e2e9142e06"><td class="memTemplParams" colspan="2">template&lt;class Alloc , FOONATHAN_REQUIRES((!std::is_base_of&lt; allocator_storage, typename std::decay&lt; Alloc &gt;::type &gt;::value)) &gt; </td></tr>
<tr class="memitem:a6b5d119f98602a5ae23eb5e2e9142e06"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a6b5d119f98602a5ae23eb5e2e9142e06">allocator_storage</a> (Alloc &amp;&amp;alloc, FOONATHAN_SFINAE(new storage_policy(detail::forward&lt; Alloc &gt;(alloc))))</td></tr>
<tr class="separator:a6b5d119f98602a5ae23eb5e2e9142e06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74496a923189e836dbc598005e494464"><td class="memTemplParams" colspan="2">template&lt;class OtherPolicy &gt; </td></tr>
<tr class="memitem:a74496a923189e836dbc598005e494464"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a74496a923189e836dbc598005e494464">allocator_storage</a> (const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; OtherPolicy, Mutex &gt; &amp;other, FOONATHAN_SFINAE(new storage_policy(other.get_allocator())))</td></tr>
<tr class="separator:a74496a923189e836dbc598005e494464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9c64316bb7697bc5b3cc48328369218"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ac9c64316bb7697bc5b3cc48328369218">is_composable</a> () const noexcept</td></tr>
<tr class="separator:ac9c64316bb7697bc5b3cc48328369218"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a56d7233fc2658287acfe68b4407f7267"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a56d7233fc2658287acfe68b4407f7267">allocator_storage</a> (<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;&amp;other) noexcept</td></tr>
<tr class="separator:a56d7233fc2658287acfe68b4407f7267"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b05c498eb284ca3fa56b1a4a746cceb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a6b05c498eb284ca3fa56b1a4a746cceb">operator=</a> (<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;&amp;other) noexcept</td></tr>
<tr class="separator:a6b05c498eb284ca3fa56b1a4a746cceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a244556cd8bd594aeddb55b784422b5e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a244556cd8bd594aeddb55b784422b5e8">allocator_storage</a> (const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;)=default</td></tr>
<tr class="separator:a244556cd8bd594aeddb55b784422b5e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21a2ca7b51324bdc6e2c64d2aa883988"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a21a2ca7b51324bdc6e2c64d2aa883988">operator=</a> (const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> &amp;)=default</td></tr>
<tr class="separator:a21a2ca7b51324bdc6e2c64d2aa883988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:aa0774f4f3278b78aab48272657c8da07"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#aa0774f4f3278b78aab48272657c8da07">allocate_node</a> (std::size_t size, std::size_t alignment)</td></tr>
<tr class="separator:aa0774f4f3278b78aab48272657c8da07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a715b1b18b6b22f38918a3b9c9a9fae0b"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a715b1b18b6b22f38918a3b9c9a9fae0b">allocate_array</a> (std::size_t count, std::size_t size, std::size_t alignment)</td></tr>
<tr class="separator:a715b1b18b6b22f38918a3b9c9a9fae0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af39c4c8201ed3a86738d5571239e19db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#af39c4c8201ed3a86738d5571239e19db">deallocate_node</a> (void *ptr, std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:af39c4c8201ed3a86738d5571239e19db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f89da0a2dbd6ad5089178c828bb95df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a7f89da0a2dbd6ad5089178c828bb95df">deallocate_array</a> (void *ptr, std::size_t count, std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:a7f89da0a2dbd6ad5089178c828bb95df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64caa0912affaefd4778635a8a76294c"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a64caa0912affaefd4778635a8a76294c">max_node_size</a> () const</td></tr>
<tr class="separator:a64caa0912affaefd4778635a8a76294c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62f877acb00d33a3725a41c767152a5c"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a62f877acb00d33a3725a41c767152a5c">max_array_size</a> () const</td></tr>
<tr class="separator:a62f877acb00d33a3725a41c767152a5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43e724b99fe1eb9b9a986a993da27b3b"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a43e724b99fe1eb9b9a986a993da27b3b">max_alignment</a> () const</td></tr>
<tr class="separator:a43e724b99fe1eb9b9a986a993da27b3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a592316c791828db1554c8152dbb512e0"><td class="memTemplParams" colspan="2">template&lt;typename Dummy = std::true_type, FOONATHAN_REQUIRES(Dummy::value &amp;&amp;(composable::value)) &gt; </td></tr>
<tr class="memitem:a592316c791828db1554c8152dbb512e0"><td class="memTemplItemLeft" align="right" valign="top">void *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a592316c791828db1554c8152dbb512e0">try_allocate_node</a> (std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:a592316c791828db1554c8152dbb512e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1db4f3c7901fb7654a12b28704337d2"><td class="memTemplParams" colspan="2">template&lt;typename Dummy = std::true_type, FOONATHAN_REQUIRES(Dummy::value &amp;&amp;(composable::value)) &gt; </td></tr>
<tr class="memitem:ae1db4f3c7901fb7654a12b28704337d2"><td class="memTemplItemLeft" align="right" valign="top">void *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ae1db4f3c7901fb7654a12b28704337d2">try_allocate_array</a> (std::size_t count, std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:ae1db4f3c7901fb7654a12b28704337d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c9e0f5870c99a1accc9f3584b5204e"><td class="memTemplParams" colspan="2">template&lt;typename Dummy = std::true_type, FOONATHAN_REQUIRES(Dummy::value &amp;&amp;(composable::value)) &gt; </td></tr>
<tr class="memitem:ae6c9e0f5870c99a1accc9f3584b5204e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ae6c9e0f5870c99a1accc9f3584b5204e">try_deallocate_node</a> (void *ptr, std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:ae6c9e0f5870c99a1accc9f3584b5204e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a351b4f545a9cd775cee55a641ed41487"><td class="memTemplParams" colspan="2">template&lt;typename Dummy = std::true_type, FOONATHAN_REQUIRES(Dummy::value &amp;&amp;(composable::value)) &gt; </td></tr>
<tr class="memitem:a351b4f545a9cd775cee55a641ed41487"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a351b4f545a9cd775cee55a641ed41487">try_deallocate_array</a> (void *ptr, std::size_t count, std::size_t size, std::size_t alignment) noexcept</td></tr>
<tr class="separator:a351b4f545a9cd775cee55a641ed41487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:ad0e22f6844a93ca183a896dc1e863a50"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ad0e22f6844a93ca183a896dc1e863a50">get_allocator</a> () noexcept -&gt; decltype(std::declval&lt; storage_policy &gt;().get_allocator())</td></tr>
<tr class="separator:ad0e22f6844a93ca183a896dc1e863a50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41a06e20d6de45e38d0ba1b5530e39be"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a41a06e20d6de45e38d0ba1b5530e39be">get_allocator</a> () const noexcept -&gt; decltype(std::declval&lt; const storage_policy &gt;().get_allocator())</td></tr>
<tr class="separator:a41a06e20d6de45e38d0ba1b5530e39be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a70340fa1e8b36309bab2e07a334c35d7"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#a70340fa1e8b36309bab2e07a334c35d7">lock</a> () noexcept -&gt; FOONATHAN_IMPL_DEFINED(decltype(detail::lock_allocator(std::declval&lt; storage_policy &gt;().<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ad0e22f6844a93ca183a896dc1e863a50">get_allocator</a>(), std::declval&lt; actual_mutex &amp; &gt;())))</td></tr>
<tr class="separator:a70340fa1e8b36309bab2e07a334c35d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9b6521dd63f476505204524cec626ce"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#af9b6521dd63f476505204524cec626ce">lock</a> () const noexcept -&gt; FOONATHAN_IMPL_DEFINED(decltype(detail::lock_allocator(std::declval&lt; const storage_policy &gt;().<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ad0e22f6844a93ca183a896dc1e863a50">get_allocator</a>(), std::declval&lt; actual_mutex &amp; &gt;())))</td></tr>
<tr class="separator:af9b6521dd63f476505204524cec626ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructors</h2>
<a id="a2980916240030f41c8dba8ada4914027"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2980916240030f41c8dba8ada4914027">&#9670;&nbsp;</a></span>allocator_storage() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</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">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Creates it by default-constructing the <code>StoragePolicy</code>. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The <code>StoragePolicy</code> must be default-constructible. </dd></dl>
<dl class="section user"><dt>Notes:</dt><dd>The default constructor may create an invalid allocator storage not associated with any allocator. If that is the case, it must not be used. </dd></dl>
</div>
</div>
<a id="a6b5d119f98602a5ae23eb5e2e9142e06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b5d119f98602a5ae23eb5e2e9142e06">&#9670;&nbsp;</a></span>allocator_storage() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> </td>
<td>(</td>
<td class="paramtype">Alloc &amp;&amp;&#160;</td>
<td class="paramname"><em>alloc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FOONATHAN_SFINAE(new storage_policy(detail::forward&lt; Alloc &gt;(alloc)))&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Creates it by passing it an allocator. The allocator will be forwarded to the <code>StoragePolicy</code>, it decides whether it will be moved, its address stored or something else. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The expression <code>new storage_policy(std::forward&lt;Alloc&gt;(alloc))</code> must be well-formed, otherwise this constructor does not participate in overload resolution. </dd></dl>
</div>
</div>
<a id="a74496a923189e836dbc598005e494464"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74496a923189e836dbc598005e494464">&#9670;&nbsp;</a></span>allocator_storage() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; OtherPolicy, Mutex &gt; &amp;&#160;</td>
<td class="paramname"><em>other</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FOONATHAN_SFINAE(new storage_policy(other.get_allocator()))&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Creates it by passing it another <code>allocator_storage</code> with a different <code>StoragePolicy</code> but the same <code>Mutex</code> type. Initializes it with the result of <code>other.get_allocator()</code>. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The expression <code>new storage_policy(other.get_allocator())</code> must be well-formed, otherwise this constructor does not participate in overload resolution. </dd></dl>
</div>
</div>
<a id="a56d7233fc2658287acfe68b4407f7267"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56d7233fc2658287acfe68b4407f7267">&#9670;&nbsp;</a></span>allocator_storage() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; StoragePolicy, Mutex &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>other</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">
<dl class="section user"><dt>Effects:</dt><dd>Moves the <code>allocator_storage</code> object. A moved-out <code>allocator_storage</code> object must still store a valid allocator object. </dd></dl>
</div>
</div>
<a id="a244556cd8bd594aeddb55b784422b5e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a244556cd8bd594aeddb55b784422b5e8">&#9670;&nbsp;</a></span>allocator_storage() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; StoragePolicy, Mutex &gt; &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Copies the <code>allocator_storage</code> object. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The <code>StoragePolicy</code> must be copyable. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Functions</h2>
<a id="a6b05c498eb284ca3fa56b1a4a746cceb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b05c498eb284ca3fa56b1a4a746cceb">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; StoragePolicy, Mutex &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>other</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">
<dl class="section user"><dt>Effects:</dt><dd>Moves the <code>allocator_storage</code> object. A moved-out <code>allocator_storage</code> object must still store a valid allocator object. </dd></dl>
</div>
</div>
<a id="a21a2ca7b51324bdc6e2c64d2aa883988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21a2ca7b51324bdc6e2c64d2aa883988">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html">allocator_storage</a>&lt; StoragePolicy, Mutex &gt; &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Copies the <code>allocator_storage</code> object. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The <code>StoragePolicy</code> must be copyable. </dd></dl>
</div>
</div>
<a id="aa0774f4f3278b78aab48272657c8da07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0774f4f3278b78aab48272657c8da07">&#9670;&nbsp;</a></span>allocate_node()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* allocate_node </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a715b1b18b6b22f38918a3b9c9a9fae0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a715b1b18b6b22f38918a3b9c9a9fae0b">&#9670;&nbsp;</a></span>allocate_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* allocate_array </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="af39c4c8201ed3a86738d5571239e19db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af39c4c8201ed3a86738d5571239e19db">&#9670;&nbsp;</a></span>deallocate_node()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void deallocate_node </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a7f89da0a2dbd6ad5089178c828bb95df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f89da0a2dbd6ad5089178c828bb95df">&#9670;&nbsp;</a></span>deallocate_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void deallocate_array </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a64caa0912affaefd4778635a8a76294c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64caa0912affaefd4778635a8a76294c">&#9670;&nbsp;</a></span>max_node_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::size_t max_node_size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a62f877acb00d33a3725a41c767152a5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62f877acb00d33a3725a41c767152a5c">&#9670;&nbsp;</a></span>max_array_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::size_t max_array_size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a43e724b99fe1eb9b9a986a993da27b3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43e724b99fe1eb9b9a986a993da27b3b">&#9670;&nbsp;</a></span>max_alignment()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::size_t max_alignment </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
</div>
</div>
<a id="a592316c791828db1554c8152dbb512e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a592316c791828db1554c8152dbb512e0">&#9670;&nbsp;</a></span>try_allocate_node()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void* try_allocate_node </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored composable allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The allocator must be composable, i.e. <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ac9c64316bb7697bc5b3cc48328369218">is_composable()</a> must return <code>true</code>. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This check is done at compile-time where possible, and at runtime in the case of type-erased storage. </dd></dl>
</div>
</div>
<a id="ae1db4f3c7901fb7654a12b28704337d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1db4f3c7901fb7654a12b28704337d2">&#9670;&nbsp;</a></span>try_allocate_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void* try_allocate_array </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored composable allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The allocator must be composable, i.e. <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ac9c64316bb7697bc5b3cc48328369218">is_composable()</a> must return <code>true</code>. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This check is done at compile-time where possible, and at runtime in the case of type-erased storage. </dd></dl>
</div>
</div>
<a id="ae6c9e0f5870c99a1accc9f3584b5204e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6c9e0f5870c99a1accc9f3584b5204e">&#9670;&nbsp;</a></span>try_deallocate_node()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool try_deallocate_node </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored composable allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The allocator must be composable, i.e. <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ac9c64316bb7697bc5b3cc48328369218">is_composable()</a> must return <code>true</code>. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This check is done at compile-time where possible, and at runtime in the case of type-erased storage. </dd></dl>
</div>
</div>
<a id="a351b4f545a9cd775cee55a641ed41487"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a351b4f545a9cd775cee55a641ed41487">&#9670;&nbsp;</a></span>try_deallocate_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool try_deallocate_array </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</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">
<dl class="section user"><dt>Effects:</dt><dd>Calls the function on the stored composable allocator. The <code>Mutex</code> will be locked during the operation. </dd></dl>
<dl class="section user"><dt>Requires:</dt><dd>The allocator must be composable, i.e. <a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ac9c64316bb7697bc5b3cc48328369218">is_composable()</a> must return <code>true</code>. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This check is done at compile-time where possible, and at runtime in the case of type-erased storage. </dd></dl>
</div>
</div>
<a id="ad0e22f6844a93ca183a896dc1e863a50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0e22f6844a93ca183a896dc1e863a50">&#9670;&nbsp;</a></span>get_allocator() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto get_allocator </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> -&gt; decltype(std::declval&lt;storage_policy&gt;().get_allocator())
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Forwards to the <code>StoragePolicy</code>. </dd></dl>
<dl class="section user"><dt>Returns:</dt><dd>Returns a reference to the stored allocator. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This does not lock the <code>Mutex</code>. </dd></dl>
</div>
</div>
<a id="a41a06e20d6de45e38d0ba1b5530e39be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41a06e20d6de45e38d0ba1b5530e39be">&#9670;&nbsp;</a></span>get_allocator() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto get_allocator </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const -&gt; decltype(std::declval&lt;const storage_policy&gt;().get_allocator())
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Effects:</dt><dd>Forwards to the <code>StoragePolicy</code>. </dd></dl>
<dl class="section user"><dt>Returns:</dt><dd>Returns a reference to the stored allocator. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This does not lock the <code>Mutex</code>. </dd></dl>
</div>
</div>
<a id="a70340fa1e8b36309bab2e07a334c35d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70340fa1e8b36309bab2e07a334c35d7">&#9670;&nbsp;</a></span>lock() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto lock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> -&gt; FOONATHAN_IMPL_DEFINED(decltype(detail::lock_allocator( std::declval&lt;storage_policy&gt;().<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ad0e22f6844a93ca183a896dc1e863a50">get_allocator</a>(), std::declval&lt;actual_mutex&amp;&gt;())))
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Returns:</dt><dd>A proxy object that acts like a pointer to the stored allocator. It cannot be reassigned to point to another allocator object and only moving is supported, which is destructive. As long as the proxy object lives and is not moved from, the <code>Mutex</code> will be kept locked. </dd></dl>
</div>
</div>
<a id="af9b6521dd63f476505204524cec626ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9b6521dd63f476505204524cec626ce">&#9670;&nbsp;</a></span>lock() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto lock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const -&gt; FOONATHAN_IMPL_DEFINED(decltype( detail::lock_allocator(std::declval&lt;const storage_policy&gt;().<a class="el" href="classfoonathan_1_1memory_1_1allocator__storage.html#ad0e22f6844a93ca183a896dc1e863a50">get_allocator</a>(), std::declval&lt;actual_mutex&amp;&gt;())))
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Returns:</dt><dd>A proxy object that acts like a pointer to the stored allocator. It cannot be reassigned to point to another allocator object and only moving is supported, which is destructive. As long as the proxy object lives and is not moved from, the <code>Mutex</code> will be kept locked. </dd></dl>
</div>
</div>
<a id="ac9c64316bb7697bc5b3cc48328369218"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9c64316bb7697bc5b3cc48328369218">&#9670;&nbsp;</a></span>is_composable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool is_composable </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">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section user"><dt>Returns:</dt><dd>Whether or not the stored allocator is composable, that is you can use the compositioning functions. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Due to type-erased allocators, this function can not be <code>constexpr</code>. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.16-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
1
https://gitee.com/mobangjack/memory.git
git@gitee.com:mobangjack/memory.git
mobangjack
memory
memory
gh-pages

搜索帮助