1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>alloc_construct, alloc_destroy</title> 5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../index.html" title="Chapter 1. Boost.Core"> 8<link rel="up" href="../index.html" title="Chapter 1. Boost.Core"> 9<link rel="prev" href="allocator_access.html" title="Allocator Access"> 10<link rel="next" href="checked_delete.html" title="checked_delete"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="allocator_access.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="checked_delete.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 27<a name="core.alloc_construct"></a><a class="link" href="alloc_construct.html" title="alloc_construct, alloc_destroy">alloc_construct, alloc_destroy</a> 28</h2></div></div></div> 29<div class="toc"><dl class="toc"> 30<dt><span class="section"><a href="alloc_construct.html#core.alloc_construct.overview">Overview</a></span></dt> 31<dt><span class="section"><a href="alloc_construct.html#core.alloc_construct.example">Example</a></span></dt> 32<dt><span class="section"><a href="alloc_construct.html#core.alloc_construct.reference">Reference</a></span></dt> 33<dt><span class="section"><a href="alloc_construct.html#core.alloc_construct.compatibility">Compatibility</a></span></dt> 34<dt><span class="section"><a href="alloc_construct.html#core.alloc_construct.acknowledgments">Acknowledgments</a></span></dt> 35</dl></div> 36<div class="simplesect"> 37<div class="titlepage"><div><div><h3 class="title"> 38<a name="idm45312830620864"></a>Authors</h3></div></div></div> 39<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> 40 Glen Fernandes 41 </li></ul></div> 42</div> 43<div class="section"> 44<div class="titlepage"><div><div><h3 class="title"> 45<a name="core.alloc_construct.overview"></a><a class="link" href="alloc_construct.html#core.alloc_construct.overview" title="Overview">Overview</a> 46</h3></div></div></div> 47<p> 48 The header <boost/core/alloc_construct.hpp> provides function templates 49 <code class="computeroutput"><span class="identifier">alloc_construct</span></code>, <code class="computeroutput"><span class="identifier">alloc_construct_n</span></code>, <code class="computeroutput"><span class="identifier">alloc_destroy</span></code>, 50 and <code class="computeroutput"><span class="identifier">alloc_destroy_n</span></code> for allocator 51 aware and exception safe construction and destruction of objects and arrays. 52 </p> 53</div> 54<div class="section"> 55<div class="titlepage"><div><div><h3 class="title"> 56<a name="core.alloc_construct.example"></a><a class="link" href="alloc_construct.html#core.alloc_construct.example" title="Example">Example</a> 57</h3></div></div></div> 58<p> 59 The following example allocates storage for an array of <code class="computeroutput"><span class="identifier">n</span></code> 60 elements of <code class="computeroutput"><span class="identifier">T</span></code> using an allocator 61 <code class="computeroutput"><span class="identifier">a</span></code> and constructs <code class="computeroutput"><span class="identifier">T</span></code> elements in that storage. If any exception 62 was thrown during construction of an element, the constructed elements are 63 destroyed in reverse order. 64 </p> 65<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">></span> 66<span class="keyword">auto</span> <span class="identifier">create</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">)</span> 67<span class="special">{</span> 68 <span class="keyword">auto</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">allocate</span><span class="special">(</span><span class="identifier">n</span><span class="special">);</span> 69 <span class="keyword">try</span> <span class="special">{</span> 70 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">to_address</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">n</span><span class="special">);</span> 71 <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(...)</span> <span class="special">{</span> 72 <span class="identifier">a</span><span class="special">.</span><span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span> 73 <span class="keyword">throw</span><span class="special">;</span> 74 <span class="special">}</span> 75 <span class="keyword">return</span> <span class="identifier">p</span><span class="special">;</span> 76<span class="special">}</span> 77</pre> 78</div> 79<div class="section"> 80<div class="titlepage"><div><div><h3 class="title"> 81<a name="core.alloc_construct.reference"></a><a class="link" href="alloc_construct.html#core.alloc_construct.reference" title="Reference">Reference</a> 82</h3></div></div></div> 83<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> 84 85<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 86<span class="keyword">void</span> <span class="identifier">alloc_destroy</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span> 87 88<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 89<span class="keyword">void</span> <span class="identifier">alloc_destroy_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">);</span> 90 91<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Args</span><span class="special">></span> 92<span class="keyword">void</span> <span class="identifier">alloc_construct</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&&...</span> <span class="identifier">args</span><span class="special">);</span> 93 94<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 95<span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">);</span> 96 97<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 98<span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">m</span><span class="special">);</span> 99 100<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">I</span><span class="special">></span> 101<span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">begin</span><span class="special">);</span> 102 103<span class="special">}</span> <span class="comment">/* boost */</span> 104</pre> 105<div class="section"> 106<div class="titlepage"><div><div><h4 class="title"> 107<a name="core.alloc_construct.reference.functions"></a><a class="link" href="alloc_construct.html#core.alloc_construct.reference.functions" title="Functions">Functions</a> 108</h4></div></div></div> 109<div class="variablelist"> 110<p class="title"><b></b></p> 111<dl class="variablelist"> 112<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_destroy</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">);</span></code></span></dt> 113<dd><div class="variablelist"> 114<p class="title"><b></b></p> 115<dl class="variablelist"> 116<dt><span class="term">Requires</span></dt> 117<dd><p> 118 <code class="computeroutput"><span class="identifier">A</span></code> is an <span class="emphasis"><em>Allocator</em></span> 119 </p></dd> 120<dt><span class="term">Effects</span></dt> 121<dd><p> 122 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> 123 <span class="identifier">p</span><span class="special">)</span></code>. 124 </p></dd> 125</dl> 126</div></dd> 127<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_destroy_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> 128 <span class="identifier">n</span><span class="special">);</span></code></span></dt> 129<dd><div class="variablelist"> 130<p class="title"><b></b></p> 131<dl class="variablelist"> 132<dt><span class="term">Requires</span></dt> 133<dd><p> 134 <code class="computeroutput"><span class="identifier">A</span></code> is an <span class="emphasis"><em>Allocator</em></span> 135 </p></dd> 136<dt><span class="term">Effects</span></dt> 137<dd><p> 138 Destroys each <code class="computeroutput"><span class="identifier">i</span></code>-th 139 element in reverse order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span></code>. 140 </p></dd> 141</dl> 142</div></dd> 143<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Args</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_construct</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&&...</span> 144 <span class="identifier">args</span><span class="special">);</span></code></span></dt> 145<dd><div class="variablelist"> 146<p class="title"><b></b></p> 147<dl class="variablelist"> 148<dt><span class="term">Requires</span></dt> 149<dd><p> 150 <code class="computeroutput"><span class="identifier">A</span></code> is an <span class="emphasis"><em>Allocator</em></span> 151 </p></dd> 152<dt><span class="term">Effects</span></dt> 153<dd><p> 154 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">construct</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> 155 <span class="identifier">p</span><span class="special">,</span> 156 <span class="identifier">std</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...)</span></code>. 157 </p></dd> 158</dl> 159</div></dd> 160<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> 161 <span class="identifier">n</span><span class="special">);</span></code></span></dt> 162<dd><div class="variablelist"> 163<p class="title"><b></b></p> 164<dl class="variablelist"> 165<dt><span class="term">Requires</span></dt> 166<dd><p> 167 <code class="computeroutput"><span class="identifier">A</span></code> is an <span class="emphasis"><em>Allocator</em></span> 168 </p></dd> 169<dt><span class="term">Effects</span></dt> 170<dd><p> 171 Constructs each <code class="computeroutput"><span class="identifier">i</span></code>-th 172 element in order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">construct</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span></code>. 173 </p></dd> 174<dt><span class="term">Remarks</span></dt> 175<dd><p> 176 If an exception is thrown destroys each already constructed 177 <code class="computeroutput"><span class="identifier">j</span></code>-th element 178 in reverse order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">j</span><span class="special">])</span></code>. 179 </p></dd> 180</dl> 181</div></dd> 182<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> 183 <span class="identifier">n</span><span class="special">,</span> 184 <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> 185 <span class="identifier">m</span><span class="special">);</span></code></span></dt> 186<dd><div class="variablelist"> 187<p class="title"><b></b></p> 188<dl class="variablelist"> 189<dt><span class="term">Requires</span></dt> 190<dd><p> 191 <code class="computeroutput"><span class="identifier">A</span></code> is an <span class="emphasis"><em>Allocator</em></span> 192 </p></dd> 193<dt><span class="term">Effects</span></dt> 194<dd><p> 195 Constructs each <code class="computeroutput"><span class="identifier">i</span></code>-th 196 element in order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">construct</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> 197 <span class="identifier">l</span><span class="special">[</span><span class="identifier">i</span> <span class="special">%</span> 198 <span class="identifier">m</span><span class="special">])</span></code>. 199 </p></dd> 200<dt><span class="term">Remarks</span></dt> 201<dd><p> 202 If an exception is thrown destroys each already constructed 203 <code class="computeroutput"><span class="identifier">j</span></code>-th element 204 in reverse order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">j</span><span class="special">])</span></code>. 205 </p></dd> 206</dl> 207</div></dd> 208<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">I</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">alloc_construct_n</span><span class="special">(</span><span class="identifier">A</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">begin</span><span class="special">);</span></code></span></dt> 209<dd><div class="variablelist"> 210<p class="title"><b></b></p> 211<dl class="variablelist"> 212<dt><span class="term">Requires</span></dt> 213<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 214<li class="listitem"> 215 <code class="computeroutput"><span class="identifier">A</span></code> is an 216 <span class="emphasis"><em>Allocator</em></span> 217 </li> 218<li class="listitem"> 219 <code class="computeroutput"><span class="identifier">I</span></code> is an 220 <span class="emphasis"><em>InputIterator</em></span> 221 </li> 222</ul></div></dd> 223<dt><span class="term">Effects</span></dt> 224<dd> 225 Constructs each <code class="computeroutput"><span class="identifier">i</span></code>-th 226 element in order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">construct</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> 227 <span class="special">*</span><span class="identifier">begin</span><span class="special">++])</span></code>. 228 </dd> 229<dt><span class="term">Remarks</span></dt> 230<dd><p> 231 If an exception is thrown destroys each already constructed 232 <code class="computeroutput"><span class="identifier">j</span></code>-th element 233 in reverse order by calling <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">A</span><span class="special">>::</span><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="special">&</span><span class="identifier">p</span><span class="special">[</span><span class="identifier">j</span><span class="special">])</span></code>. 234 </p></dd> 235</dl> 236</div></dd> 237</dl> 238</div> 239</div> 240</div> 241<div class="section"> 242<div class="titlepage"><div><div><h3 class="title"> 243<a name="core.alloc_construct.compatibility"></a><a class="link" href="alloc_construct.html#core.alloc_construct.compatibility" title="Compatibility">Compatibility</a> 244</h3></div></div></div> 245<p> 246 When <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ALLOCATOR</span></code> 247 is defined, and the C++11 allocator model is not supported, these functions 248 invoke constructors and destructors directly without going through the supplied 249 allocator. 250 </p> 251</div> 252<div class="section"> 253<div class="titlepage"><div><div><h3 class="title"> 254<a name="core.alloc_construct.acknowledgments"></a><a class="link" href="alloc_construct.html#core.alloc_construct.acknowledgments" title="Acknowledgments">Acknowledgments</a> 255</h3></div></div></div> 256<p> 257 Glen Fernandes originally implemented this functionality in Boost.Smart_Ptr 258 and later moved these functions to Boost.Core for use in other Boost libraries, 259 such as Boost.Multi_Array and Boost.Histogram. 260 </p> 261</div> 262</div> 263<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 264<td align="left"></td> 265<td align="right"><div class="copyright-footer">Copyright © 2014 Peter Dimov<br>Copyright © 2014 Glen Fernandes<br>Copyright © 2014 Andrey Semashev<p> 266 Distributed under the <a href="http://boost.org/LICENSE_1_0.txt" target="_top">Boost 267 Software License, Version 1.0</a>. 268 </p> 269</div></td> 270</tr></table> 271<hr> 272<div class="spirit-nav"> 273<a accesskey="p" href="allocator_access.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="checked_delete.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 274</div> 275</body> 276</html> 277