• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5<title>Reference</title>
6<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9<link rel="up" href="../align.html" title="Chapter 3. Boost.Align">
10<link rel="prev" href="examples.html" title="Examples">
11<link rel="next" href="vocabulary.html" title="Vocabulary">
12</head>
13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14<table cellpadding="2" width="100%"><tr>
15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
16<td align="center"><a href="../../../index.html">Home</a></td>
17<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20<td align="center"><a href="../../../more/index.htm">More</a></td>
21</tr></table>
22<hr>
23<div class="spirit-nav">
24<a accesskey="p" href="examples.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.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="vocabulary.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
25</div>
26<div class="section">
27<div class="titlepage"><div><div><h2 class="title" style="clear: both">
28<a name="align.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
29</h2></div></div></div>
30<div class="toc"><dl class="toc">
31<dt><span class="section"><a href="reference.html#align.reference.functions">Functions</a></span></dt>
32<dt><span class="section"><a href="reference.html#align.reference.classes">Classes</a></span></dt>
33<dt><span class="section"><a href="reference.html#align.reference.traits">Traits</a></span></dt>
34<dt><span class="section"><a href="reference.html#align.reference.macros">Macros</a></span></dt>
35</dl></div>
36<div class="section">
37<div class="titlepage"><div><div><h3 class="title">
38<a name="align.reference.functions"></a><a class="link" href="reference.html#align.reference.functions" title="Functions">Functions</a>
39</h3></div></div></div>
40<div class="toc"><dl class="toc">
41<dt><span class="section"><a href="reference.html#align.reference.functions.align">align</a></span></dt>
42<dt><span class="section"><a href="reference.html#align.reference.functions.align_up">align_up</a></span></dt>
43<dt><span class="section"><a href="reference.html#align.reference.functions.align_down">align_down</a></span></dt>
44<dt><span class="section"><a href="reference.html#align.reference.functions.aligned_alloc">aligned_alloc</a></span></dt>
45<dt><span class="section"><a href="reference.html#align.reference.functions.aligned_free">aligned_free</a></span></dt>
46<dt><span class="section"><a href="reference.html#align.reference.functions.is_aligned">is_aligned</a></span></dt>
47</dl></div>
48<div class="section">
49<div class="titlepage"><div><div><h4 class="title">
50<a name="align.reference.functions.align"></a><a class="link" href="reference.html#align.reference.functions.align" title="align">align</a>
51</h4></div></div></div>
52<div class="variablelist">
53<p class="title"><b></b></p>
54<dl class="variablelist">
55<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span><span class="special">*</span>
56            <span class="identifier">align</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">alignment</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
57            <span class="identifier">size</span><span class="special">,</span>
58            <span class="keyword">void</span><span class="special">*&amp;</span>
59            <span class="identifier">ptr</span><span class="special">,</span>
60            <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&amp;</span>
61            <span class="identifier">space</span><span class="special">);</span></code></span></dt>
62<dd><div class="variablelist">
63<p class="title"><b></b></p>
64<dl class="variablelist">
65<dt><span class="term">Header</span></dt>
66<dd><p>
67                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">align</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
68                    </p></dd>
69<dt><span class="term">Effects</span></dt>
70<dd><p>
71                      If it is possible to fit <code class="computeroutput"><span class="identifier">size</span></code>
72                      bytes of storage aligned by <code class="computeroutput"><span class="identifier">alignment</span></code>
73                      into the buffer pointed to by <code class="computeroutput"><span class="identifier">ptr</span></code>
74                      with length <code class="computeroutput"><span class="identifier">space</span></code>,
75                      the function updates <code class="computeroutput"><span class="identifier">ptr</span></code>
76                      to point to the first possible address of such storage and
77                      decreases <code class="computeroutput"><span class="identifier">space</span></code>
78                      by the number of bytes used for alignment. Otherwise, the function
79                      does nothing.
80                    </p></dd>
81<dt><span class="term">Requires</span></dt>
82<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
83<li class="listitem">
84                          <code class="computeroutput"><span class="identifier">alignment</span></code>
85                          shall be a power of two
86                        </li>
87<li class="listitem">
88                          <code class="computeroutput"><span class="identifier">ptr</span></code> shall
89                          point to contiguous storage of at least <code class="computeroutput"><span class="identifier">space</span></code>
90                          bytes
91                        </li>
92</ul></div></dd>
93<dt><span class="term">Returns</span></dt>
94<dd>
95                      A null pointer if the requested aligned buffer would not fit
96                      into the available space, otherwise the adjusted value of
97                      <code class="computeroutput"><span class="identifier">ptr</span></code>.
98                    </dd>
99<dt><span class="term">Note</span></dt>
100<dd><p>
101                      The function updates its <code class="computeroutput"><span class="identifier">ptr</span></code>
102                      and <code class="computeroutput"><span class="identifier">space</span></code> arguments
103                      so that it can be called repeatedly with possibly different
104                      <code class="computeroutput"><span class="identifier">alignment</span></code> and
105                      <code class="computeroutput"><span class="identifier">size</span></code>arguments
106                      for the same buffer.
107                    </p></dd>
108</dl>
109</div></dd>
110</dl>
111</div>
112</div>
113<div class="section">
114<div class="titlepage"><div><div><h4 class="title">
115<a name="align.reference.functions.align_up"></a><a class="link" href="reference.html#align.reference.functions.align_up" title="align_up">align_up</a>
116</h4></div></div></div>
117<div class="variablelist">
118<p class="title"><b></b></p>
119<dl class="variablelist">
120<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">constexpr</span>
121            <span class="identifier">T</span> <span class="identifier">align_up</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">alignment</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
122<dd><div class="variablelist">
123<p class="title"><b></b></p>
124<dl class="variablelist">
125<dt><span class="term">Header</span></dt>
126<dd><p>
127                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">align_up</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
128                    </p></dd>
129<dt><span class="term">Constraints</span></dt>
130<dd><p>
131                      <code class="computeroutput"><span class="identifier">T</span></code> is not a
132                      pointer type
133                    </p></dd>
134<dt><span class="term">Requires</span></dt>
135<dd><p>
136                      <code class="computeroutput"><span class="identifier">alignment</span></code> shall
137                      be a power of two
138                    </p></dd>
139<dt><span class="term">Returns</span></dt>
140<dd><p>
141                      A value at or after <code class="computeroutput"><span class="identifier">value</span></code>
142                      that is a multiple of <code class="computeroutput"><span class="identifier">alignment</span></code>.
143                    </p></dd>
144</dl>
145</div></dd>
146</dl>
147</div>
148</div>
149<div class="section">
150<div class="titlepage"><div><div><h4 class="title">
151<a name="align.reference.functions.align_down"></a><a class="link" href="reference.html#align.reference.functions.align_down" title="align_down">align_down</a>
152</h4></div></div></div>
153<div class="variablelist">
154<p class="title"><b></b></p>
155<dl class="variablelist">
156<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">constexpr</span>
157            <span class="identifier">T</span> <span class="identifier">align_down</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">alignment</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
158<dd><div class="variablelist">
159<p class="title"><b></b></p>
160<dl class="variablelist">
161<dt><span class="term">Header</span></dt>
162<dd><p>
163                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">align_down</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
164                    </p></dd>
165<dt><span class="term">Constraints</span></dt>
166<dd><p>
167                      <code class="computeroutput"><span class="identifier">T</span></code> is not a
168                      pointer type
169                    </p></dd>
170<dt><span class="term">Requires</span></dt>
171<dd><p>
172                      <code class="computeroutput"><span class="identifier">alignment</span></code> shall
173                      be a power of two
174                    </p></dd>
175<dt><span class="term">Returns</span></dt>
176<dd><p>
177                      A value at or before <code class="computeroutput"><span class="identifier">value</span></code>
178                      that is a multiple of <code class="computeroutput"><span class="identifier">alignment</span></code>.
179                    </p></dd>
180</dl>
181</div></dd>
182</dl>
183</div>
184</div>
185<div class="section">
186<div class="titlepage"><div><div><h4 class="title">
187<a name="align.reference.functions.aligned_alloc"></a><a class="link" href="reference.html#align.reference.functions.aligned_alloc" title="aligned_alloc">aligned_alloc</a>
188</h4></div></div></div>
189<div class="variablelist">
190<p class="title"><b></b></p>
191<dl class="variablelist">
192<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span><span class="special">*</span>
193            <span class="identifier">aligned_alloc</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">alignment</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
194            <span class="identifier">size</span><span class="special">);</span></code></span></dt>
195<dd><div class="variablelist">
196<p class="title"><b></b></p>
197<dl class="variablelist">
198<dt><span class="term">Header</span></dt>
199<dd><p>
200                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">aligned_alloc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
201                    </p></dd>
202<dt><span class="term">Effects</span></dt>
203<dd><p>
204                      Allocates space for an object whose alignment is specified
205                      by <code class="computeroutput"><span class="identifier">alignment</span></code>,
206                      whose size is specified by <code class="computeroutput"><span class="identifier">size</span></code>,
207                      and whose value is indeterminate.
208                    </p></dd>
209<dt><span class="term">Requires</span></dt>
210<dd><p>
211                      <code class="computeroutput"><span class="identifier">alignment</span></code> shall
212                      be a power of two.
213                    </p></dd>
214<dt><span class="term">Returns</span></dt>
215<dd><p>
216                      A null pointer or a pointer to the allocated space.
217                    </p></dd>
218<dt><span class="term">Note</span></dt>
219<dd><p>
220                      On certain platforms, the space allocated may be slightly larger
221                      than <code class="computeroutput"><span class="identifier">size</span></code> bytes,
222                      to allow for alignment.
223                    </p></dd>
224</dl>
225</div></dd>
226</dl>
227</div>
228</div>
229<div class="section">
230<div class="titlepage"><div><div><h4 class="title">
231<a name="align.reference.functions.aligned_free"></a><a class="link" href="reference.html#align.reference.functions.aligned_free" title="aligned_free">aligned_free</a>
232</h4></div></div></div>
233<div class="variablelist">
234<p class="title"><b></b></p>
235<dl class="variablelist">
236<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span> <span class="identifier">aligned_free</span><span class="special">(</span><span class="keyword">void</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span></code></span></dt>
237<dd><div class="variablelist">
238<p class="title"><b></b></p>
239<dl class="variablelist">
240<dt><span class="term">Header</span></dt>
241<dd><p>
242                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">aligned_alloc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
243                    </p></dd>
244<dt><span class="term">Effects</span></dt>
245<dd><p>
246                      Causes the space pointed to by <code class="computeroutput"><span class="identifier">ptr</span></code>
247                      to be deallocated, that is, made available for further allocation.
248                      If <code class="computeroutput"><span class="identifier">ptr</span></code> is a
249                      null pointer, no action occurs. Otherwise, if the argument
250                      does not match a pointer earlier returned by the <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">()</span></code>
251                      function, or if the space has been deallocated by a call to
252                      <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code>, the behavior is undefined.
253                    </p></dd>
254<dt><span class="term">Requires</span></dt>
255<dd><p>
256                      <code class="computeroutput"><span class="identifier">ptr</span></code> is a null
257                      pointer or a pointer earlier returned by the <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">()</span></code>
258                      function that has not been deallocated by a call to <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code>.
259                    </p></dd>
260<dt><span class="term">Returns</span></dt>
261<dd><p>
262                      The <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code> function returns no value.
263                    </p></dd>
264</dl>
265</div></dd>
266</dl>
267</div>
268</div>
269<div class="section">
270<div class="titlepage"><div><div><h4 class="title">
271<a name="align.reference.functions.is_aligned"></a><a class="link" href="reference.html#align.reference.functions.is_aligned" title="is_aligned">is_aligned</a>
272</h4></div></div></div>
273<div class="variablelist">
274<p class="title"><b></b></p>
275<dl class="variablelist">
276<dt><span class="term"><code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">is_aligned</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">volatile</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
277            <span class="identifier">alignment</span><span class="special">)</span>
278            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
279<dd><div class="variablelist">
280<p class="title"><b></b></p>
281<dl class="variablelist">
282<dt><span class="term">Header</span></dt>
283<dd><p>
284                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">is_aligned</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
285                    </p></dd>
286<dt><span class="term">Requires</span></dt>
287<dd><p>
288                      <code class="computeroutput"><span class="identifier">alignment</span></code> shall
289                      be a power of two.
290                    </p></dd>
291<dt><span class="term">Returns</span></dt>
292<dd><p>
293                      <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">ptr</span></code> is aligned on the boundary
294                      specified by <code class="computeroutput"><span class="identifier">alignment</span></code>,
295                      otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
296                    </p></dd>
297</dl>
298</div></dd>
299<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">constexpr</span>
300            <span class="keyword">bool</span> <span class="identifier">is_aligned</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">alignment</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
301<dd><div class="variablelist">
302<p class="title"><b></b></p>
303<dl class="variablelist">
304<dt><span class="term">Header</span></dt>
305<dd><p>
306                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">is_aligned</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
307                    </p></dd>
308<dt><span class="term">Constraints</span></dt>
309<dd><p>
310                      <code class="computeroutput"><span class="identifier">T</span></code> is not a
311                      pointer type
312                    </p></dd>
313<dt><span class="term">Requires</span></dt>
314<dd><p>
315                      <code class="computeroutput"><span class="identifier">alignment</span></code> shall
316                      be a power of two.
317                    </p></dd>
318<dt><span class="term">Returns</span></dt>
319<dd><p>
320                      <code class="computeroutput"><span class="keyword">true</span></code> if the value
321                      of <code class="computeroutput"><span class="identifier">value</span></code> is
322                      aligned on the boundary specified by <code class="computeroutput"><span class="identifier">alignment</span></code>,
323                      otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
324                    </p></dd>
325</dl>
326</div></dd>
327</dl>
328</div>
329</div>
330</div>
331<div class="section">
332<div class="titlepage"><div><div><h3 class="title">
333<a name="align.reference.classes"></a><a class="link" href="reference.html#align.reference.classes" title="Classes">Classes</a>
334</h3></div></div></div>
335<div class="toc"><dl class="toc">
336<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_allocator">aligned_allocator</a></span></dt>
337<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_allocator_adaptor">aligned_allocator_adaptor</a></span></dt>
338<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_delete">aligned_delete</a></span></dt>
339</dl></div>
340<div class="section">
341<div class="titlepage"><div><div><h4 class="title">
342<a name="align.reference.classes.aligned_allocator"></a><a class="link" href="reference.html#align.reference.classes.aligned_allocator" title="aligned_allocator">aligned_allocator</a>
343</h4></div></div></div>
344<div class="variablelist">
345<p class="title"><b></b></p>
346<dl class="variablelist">
347<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
348            <span class="identifier">Alignment</span> <span class="special">=</span>
349            <span class="number">1</span><span class="special">&gt;</span>
350            <span class="keyword">class</span> <span class="identifier">aligned_allocator</span><span class="special">;</span></code></span></dt>
351<dd><div class="variablelist">
352<p class="title"><b></b></p>
353<dl class="variablelist">
354<dt><span class="term">Header</span></dt>
355<dd><p>
356                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">aligned_allocator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
357                    </p></dd>
358<dt><span class="term">Note</span></dt>
359<dd><p>
360                      Using the aligned allocator with a minimum Alignment value
361                      is generally only useful with containers that are not node-based
362                      such as <code class="computeroutput"><span class="identifier">vector</span></code>.
363                      With node-based containers, such as <code class="computeroutput"><span class="identifier">list</span></code>,
364                      the node object would have the minimum alignment instead of
365                      the value type object.
366                    </p></dd>
367</dl>
368</div></dd>
369</dl>
370</div>
371<h6>
372<a name="align.reference.classes.aligned_allocator.h0"></a>
373          <span class="phrase"><a name="align.reference.classes.aligned_allocator.member_types"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator.member_types">Member
374          types</a>
375        </h6>
376<div class="orderedlist"><ol class="orderedlist" type="1">
377<li class="listitem">
378              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">T</span>
379              <span class="identifier">value_type</span><span class="special">;</span></code>
380            </li>
381<li class="listitem">
382              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span></code>
383            </li>
384<li class="listitem">
385              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
386              <span class="identifier">T</span><span class="special">*</span>
387              <span class="identifier">const_pointer</span><span class="special">;</span></code>
388            </li>
389<li class="listitem">
390              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">void_pointer</span><span class="special">;</span></code>
391            </li>
392<li class="listitem">
393              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
394              <span class="keyword">void</span><span class="special">*</span>
395              <span class="identifier">const_void_pointer</span><span class="special">;</span></code>
396            </li>
397<li class="listitem">
398              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">add_lvalue_reference_t</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">reference</span><span class="special">;</span></code>
399            </li>
400<li class="listitem">
401              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">add_lvalue_reference_t</span><span class="special">&lt;</span><span class="keyword">const</span>
402              <span class="identifier">T</span><span class="special">&gt;</span>
403              <span class="identifier">const_reference</span><span class="special">;</span></code>
404            </li>
405<li class="listitem">
406              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
407              <span class="identifier">size_type</span><span class="special">;</span></code>
408            </li>
409<li class="listitem">
410              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
411              <span class="identifier">difference_type</span><span class="special">;</span></code>
412            </li>
413<li class="listitem">
414              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span>
415              <span class="identifier">propagate_on_container_move_assignment</span><span class="special">;</span></code>
416            </li>
417<li class="listitem">
418              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span>
419              <span class="identifier">is_always_equal</span><span class="special">;</span></code>
420            </li>
421<li class="listitem">
422              <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">struct</span>
423              <span class="identifier">rebind</span> <span class="special">{</span>
424              <span class="keyword">typedef</span> <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span></code>
425            </li>
426</ol></div>
427<h6>
428<a name="align.reference.classes.aligned_allocator.h1"></a>
429          <span class="phrase"><a name="align.reference.classes.aligned_allocator.constructors"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator.constructors">Constructors</a>
430        </h6>
431<div class="variablelist">
432<p class="title"><b></b></p>
433<dl class="variablelist">
434<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_allocator</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span></code></span></dt>
435<dd><div class="variablelist">
436<p class="title"><b></b></p>
437<dl class="variablelist">
438<dt><span class="term">Effects</span></dt>
439<dd><p>
440                      Constructs the allocator.
441                    </p></dd>
442</dl>
443</div></dd>
444<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">aligned_allocator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;)</span>
445            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
446<dd><div class="variablelist">
447<p class="title"><b></b></p>
448<dl class="variablelist">
449<dt><span class="term">Effects</span></dt>
450<dd><p>
451                      Constructs the allocator.
452                    </p></dd>
453</dl>
454</div></dd>
455</dl>
456</div>
457<h6>
458<a name="align.reference.classes.aligned_allocator.h2"></a>
459          <span class="phrase"><a name="align.reference.classes.aligned_allocator.member_functions"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator.member_functions">Member
460          functions</a>
461        </h6>
462<p>
463          Except for the destructor, member functions of the aligned allocator shall
464          not introduce data races as a result of concurrent calls to those member
465          functions from different threads. Calls to these functions that allocate
466          or deallocate a particular unit of storage shall occur in a single total
467          order, and each such deallocation call shall happen before the next allocation
468          (if any) in this order.
469        </p>
470<div class="variablelist">
471<p class="title"><b></b></p>
472<dl class="variablelist">
473<dt><span class="term"><code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span>
474            <span class="identifier">size</span><span class="special">,</span>
475            <span class="identifier">const_void_pointer</span> <span class="special">=</span>
476            <span class="number">0</span><span class="special">);</span></code></span></dt>
477<dd><div class="variablelist">
478<p class="title"><b></b></p>
479<dl class="variablelist">
480<dt><span class="term">Returns</span></dt>
481<dd><p>
482                      A pointer to the initial element of an array of storage of
483                      size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
484                      <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>,
485                      aligned on the maximum of the minimum alignment specified and
486                      the alignment of objects of type <code class="computeroutput"><span class="identifier">T</span></code>.
487                    </p></dd>
488<dt><span class="term">Remark</span></dt>
489<dd><p>
490                      The storage is obtained by calling <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span></code>.
491                    </p></dd>
492<dt><span class="term">Throws</span></dt>
493<dd><p>
494                      <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> if the storage
495                      cannot be obtained.
496                    </p></dd>
497</dl>
498</div></dd>
499<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span>
500            <span class="identifier">ptr</span><span class="special">,</span>
501            <span class="identifier">size_type</span><span class="special">);</span></code></span></dt>
502<dd><div class="variablelist">
503<p class="title"><b></b></p>
504<dl class="variablelist">
505<dt><span class="term">Requires</span></dt>
506<dd><p>
507                      <code class="computeroutput"><span class="identifier">ptr</span></code> shall be
508                      a pointer value obtained from <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code>.
509                    </p></dd>
510<dt><span class="term">Effects</span></dt>
511<dd><p>
512                      Deallocates the storage referenced by <code class="computeroutput"><span class="identifier">ptr</span></code>.
513                    </p></dd>
514<dt><span class="term">Remark</span></dt>
515<dd><p>
516                      Uses <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">(</span><span class="keyword">void</span><span class="special">*)</span></code>.
517                    </p></dd>
518</dl>
519</div></dd>
520<dt><span class="term"><code class="computeroutput"><span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
521<dd><div class="variablelist">
522<p class="title"><b></b></p>
523<dl class="variablelist">
524<dt><span class="term">Returns</span></dt>
525<dd><p>
526                      The largest value <code class="computeroutput"><span class="identifier">N</span></code>
527                      for which the call <code class="computeroutput"><span class="identifier">allocate</span><span class="special">(</span><span class="identifier">N</span><span class="special">)</span></code> might succeed.
528                    </p></dd>
529</dl>
530</div></dd>
531<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">construct</span><span class="special">(</span><span class="identifier">U</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&amp;&amp;...</span>
532            <span class="identifier">args</span><span class="special">);</span></code></span></dt>
533<dd><div class="variablelist">
534<p class="title"><b></b></p>
535<dl class="variablelist">
536<dt><span class="term">Effects</span></dt>
537<dd><p>
538                      <code class="computeroutput"><span class="special">::</span><span class="keyword">new</span><span class="special">((</span><span class="keyword">void</span><span class="special">*)</span><span class="identifier">ptr</span><span class="special">)</span> <span class="identifier">U</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">&gt;(</span><span class="identifier">args</span><span class="special">)...)</span></code>.
539                    </p></dd>
540</dl>
541</div></dd>
542<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">U</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">);</span></code></span></dt>
543<dd><div class="variablelist">
544<p class="title"><b></b></p>
545<dl class="variablelist">
546<dt><span class="term">Effects</span></dt>
547<dd><p>
548                      <code class="computeroutput"><span class="identifier">ptr</span><span class="special">-&gt;~</span><span class="identifier">U</span><span class="special">()</span></code>.
549                    </p></dd>
550</dl>
551</div></dd>
552</dl>
553</div>
554<h6>
555<a name="align.reference.classes.aligned_allocator.h3"></a>
556          <span class="phrase"><a name="align.reference.classes.aligned_allocator.global_operators"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator.global_operators">Global
557          operators</a>
558        </h6>
559<div class="variablelist">
560<p class="title"><b></b></p>
561<dl class="variablelist">
562<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;,</span> <span class="keyword">const</span>
563            <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;)</span>
564            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
565<dd><div class="variablelist">
566<p class="title"><b></b></p>
567<dl class="variablelist">
568<dt><span class="term">Returns</span></dt>
569<dd><p>
570                      <code class="computeroutput"><span class="keyword">true</span></code>
571                    </p></dd>
572</dl>
573</div></dd>
574<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;,</span> <span class="keyword">const</span>
575            <span class="identifier">aligned_allocator</span><span class="special">&lt;</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;)</span>
576            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
577<dd><div class="variablelist">
578<p class="title"><b></b></p>
579<dl class="variablelist">
580<dt><span class="term">Returns</span></dt>
581<dd><p>
582                      <code class="computeroutput"><span class="keyword">false</span></code>
583                    </p></dd>
584</dl>
585</div></dd>
586</dl>
587</div>
588</div>
589<div class="section">
590<div class="titlepage"><div><div><h4 class="title">
591<a name="align.reference.classes.aligned_allocator_adaptor"></a><a class="link" href="reference.html#align.reference.classes.aligned_allocator_adaptor" title="aligned_allocator_adaptor">aligned_allocator_adaptor</a>
592</h4></div></div></div>
593<div class="variablelist">
594<p class="title"><b></b></p>
595<dl class="variablelist">
596<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
597            <span class="identifier">Alignment</span> <span class="special">=</span>
598            <span class="number">1</span><span class="special">&gt;</span>
599            <span class="keyword">class</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">;</span></code></span></dt>
600<dd><div class="variablelist">
601<p class="title"><b></b></p>
602<dl class="variablelist">
603<dt><span class="term">Header</span></dt>
604<dd><p>
605                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">aligned_allocator_adaptor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
606                    </p></dd>
607<dt><span class="term">Note</span></dt>
608<dd><p>
609                      This adaptor can be used with a C++11 Allocator whose pointer
610                      type is a smart pointer but the adaptor can choose to expose
611                      only raw pointer types.
612                    </p></dd>
613</dl>
614</div></dd>
615</dl>
616</div>
617<h6>
618<a name="align.reference.classes.aligned_allocator_adaptor.h0"></a>
619          <span class="phrase"><a name="align.reference.classes.aligned_allocator_adaptor.member_types"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator_adaptor.member_types">Member
620          types</a>
621        </h6>
622<div class="orderedlist"><ol class="orderedlist" type="1">
623<li class="listitem">
624              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
625              <span class="identifier">Allocator</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span></code>
626            </li>
627<li class="listitem">
628              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">value_type</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span></code>
629            </li>
630<li class="listitem">
631              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
632              <span class="identifier">value_type</span><span class="special">*</span>
633              <span class="identifier">const_pointer</span><span class="special">;</span></code>
634            </li>
635<li class="listitem">
636              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">void_pointer</span><span class="special">;</span></code>
637            </li>
638<li class="listitem">
639              <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
640              <span class="keyword">void</span><span class="special">*</span>
641              <span class="identifier">const_void_pointer</span><span class="special">;</span></code>
642            </li>
643<li class="listitem">
644              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
645              <span class="identifier">size_type</span><span class="special">;</span></code>
646            </li>
647<li class="listitem">
648              <code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
649              <span class="identifier">difference_type</span><span class="special">;</span></code>
650            </li>
651<li class="listitem">
652              <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="keyword">struct</span>
653              <span class="identifier">rebind</span> <span class="special">{</span>
654              <span class="keyword">typedef</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="keyword">typename</span>
655              <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special">&lt;</span><span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="keyword">template</span> <span class="identifier">rebind_alloc</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;,</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span></code>
656            </li>
657</ol></div>
658<h6>
659<a name="align.reference.classes.aligned_allocator_adaptor.h1"></a>
660          <span class="phrase"><a name="align.reference.classes.aligned_allocator_adaptor.constructors"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator_adaptor.constructors">Constructors</a>
661        </h6>
662<div class="variablelist">
663<p class="title"><b></b></p>
664<dl class="variablelist">
665<dt><span class="term"><code class="computeroutput"><span class="identifier">aligned_allocator_adaptor</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span></code></span></dt>
666<dd><div class="variablelist">
667<p class="title"><b></b></p>
668<dl class="variablelist">
669<dt><span class="term">Effects</span></dt>
670<dd><p>
671                      Value-initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
672                      base class.
673                    </p></dd>
674</dl>
675</div></dd>
676<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">(</span><span class="identifier">A</span><span class="special">&amp;&amp;</span> <span class="identifier">alloc</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
677<dd><div class="variablelist">
678<p class="title"><b></b></p>
679<dl class="variablelist">
680<dt><span class="term">Requires</span></dt>
681<dd><p>
682                      <code class="computeroutput"><span class="identifier">Allocator</span></code> shall
683                      be constructible from <code class="computeroutput"><span class="identifier">A</span></code>.
684                    </p></dd>
685<dt><span class="term">Effects</span></dt>
686<dd><p>
687                      Initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
688                      base class with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;(</span><span class="identifier">alloc</span><span class="special">)</span></code>.
689                    </p></dd>
690</dl>
691</div></dd>
692<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;</span>
693            <span class="identifier">other</span><span class="special">)</span>
694            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
695<dd><div class="variablelist">
696<p class="title"><b></b></p>
697<dl class="variablelist">
698<dt><span class="term">Requires</span></dt>
699<dd><p>
700                      <code class="computeroutput"><span class="identifier">Allocator</span></code> shall
701                      be constructible from <code class="computeroutput"><span class="identifier">A</span></code>.
702                    </p></dd>
703<dt><span class="term">Effects</span></dt>
704<dd><p>
705                      Initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
706                      base class with <code class="computeroutput"><span class="identifier">other</span><span class="special">.</span><span class="identifier">base</span><span class="special">()</span></code>.
707                    </p></dd>
708</dl>
709</div></dd>
710</dl>
711</div>
712<h6>
713<a name="align.reference.classes.aligned_allocator_adaptor.h2"></a>
714          <span class="phrase"><a name="align.reference.classes.aligned_allocator_adaptor.member_functions"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator_adaptor.member_functions">Member
715          functions</a>
716        </h6>
717<div class="variablelist">
718<p class="title"><b></b></p>
719<dl class="variablelist">
720<dt><span class="term"><code class="computeroutput"><span class="identifier">Allocator</span><span class="special">&amp;</span>
721            <span class="identifier">base</span><span class="special">()</span>
722            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
723<dd><div class="variablelist">
724<p class="title"><b></b></p>
725<dl class="variablelist">
726<dt><span class="term">Returns</span></dt>
727<dd><p>
728                      <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">Allocator</span><span class="special">&amp;&gt;(*</span><span class="keyword">this</span><span class="special">)</span></code>
729                    </p></dd>
730</dl>
731</div></dd>
732<dt><span class="term"><code class="computeroutput"><span class="keyword">const</span> <span class="identifier">Allocator</span><span class="special">&amp;</span> <span class="identifier">base</span><span class="special">()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
733<dd><div class="variablelist">
734<p class="title"><b></b></p>
735<dl class="variablelist">
736<dt><span class="term">Returns</span></dt>
737<dd><p>
738                      <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">Allocator</span><span class="special">&amp;&gt;(*</span><span class="keyword">this</span><span class="special">)</span></code>
739                    </p></dd>
740</dl>
741</div></dd>
742<dt><span class="term"><code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span>
743            <span class="identifier">size</span><span class="special">);</span></code></span></dt>
744<dd><div class="variablelist">
745<p class="title"><b></b></p>
746<dl class="variablelist">
747<dt><span class="term">Returns</span></dt>
748<dd><p>
749                      A pointer to the initial element of an array of storage of
750                      size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
751                      <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">)</span></code>,
752                      aligned on the maximum of the minimum alignment specified and
753                      the alignment of objects of type <code class="computeroutput"><span class="identifier">value_type</span></code>.
754                    </p></dd>
755<dt><span class="term">Remark</span></dt>
756<dd><p>
757                      The storage is obtained by calling <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">allocate</span><span class="special">()</span></code> on an object <code class="computeroutput"><span class="identifier">a2</span></code>, where <code class="computeroutput"><span class="identifier">a2</span></code>
758                      of type <code class="computeroutput"><span class="identifier">A2</span></code>
759                      is a rebound copy of <code class="computeroutput"><span class="identifier">base</span><span class="special">()</span></code> where its <code class="computeroutput"><span class="identifier">value_type</span></code>
760                      is implementation defined.
761                    </p></dd>
762<dt><span class="term">Throws</span></dt>
763<dd><p>
764                      Throws an exception thrown from <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">allocate</span><span class="special">()</span></code> if the storage cannot be
765                      obtained.
766                    </p></dd>
767</dl>
768</div></dd>
769<dt><span class="term"><code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span>
770            <span class="identifier">size</span><span class="special">,</span>
771            <span class="identifier">const_void_pointer</span> <span class="identifier">hint</span><span class="special">);</span></code></span></dt>
772<dd><div class="variablelist">
773<p class="title"><b></b></p>
774<dl class="variablelist">
775<dt><span class="term">Requires</span></dt>
776<dd><p>
777                      <code class="computeroutput"><span class="identifier">hint</span></code> is a value
778                      obtained by calling <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code> on any equivalent allocator
779                      object, or else a null pointer.
780                    </p></dd>
781<dt><span class="term">Returns</span></dt>
782<dd><p>
783                      A pointer to the initial element of an array of storage of
784                      size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
785                      <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">)</span></code>,
786                      aligned on the maximum of the minimum alignment specified and
787                      the alignment of objects of type <code class="computeroutput"><span class="identifier">value_type</span></code>.
788                    </p></dd>
789<dt><span class="term">Remark</span></dt>
790<dd><p>
791                      The storage is obtained by calling <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">allocate</span><span class="special">()</span></code> on an object <code class="computeroutput"><span class="identifier">a2</span></code>, where <code class="computeroutput"><span class="identifier">a2</span></code>
792                      of type <code class="computeroutput"><span class="identifier">A2</span></code>
793                      is a rebound copy of <code class="computeroutput"><span class="identifier">base</span><span class="special">()</span></code> where its <code class="computeroutput"><span class="identifier">value_type</span></code>
794                      is an implementation defined.
795                    </p></dd>
796<dt><span class="term">Throws</span></dt>
797<dd><p>
798                      Throws an exception thrown from <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">allocate</span><span class="special">()</span></code> if the storage cannot be
799                      obtained.
800                    </p></dd>
801</dl>
802</div></dd>
803<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span>
804            <span class="identifier">ptr</span><span class="special">,</span>
805            <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">);</span></code></span></dt>
806<dd><div class="variablelist">
807<p class="title"><b></b></p>
808<dl class="variablelist">
809<dt><span class="term">Requires</span></dt>
810<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
811<li class="listitem">
812                          <code class="computeroutput"><span class="identifier">ptr</span></code> shall
813                          be a pointer value obtained from <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code>
814                        </li>
815<li class="listitem">
816                          <code class="computeroutput"><span class="identifier">size</span></code> shall
817                          equal the value passed as the first argument to the invocation
818                          of <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code> which returned <code class="computeroutput"><span class="identifier">ptr</span></code>.
819                        </li>
820</ul></div></dd>
821<dt><span class="term">Effects</span></dt>
822<dd>
823                      Deallocates the storage referenced by <code class="computeroutput"><span class="identifier">ptr</span></code>.
824                    </dd>
825<dt><span class="term">Note</span></dt>
826<dd><p>
827                      Uses <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">deallocate</span><span class="special">()</span></code>
828                      on an object <code class="computeroutput"><span class="identifier">a2</span></code>,
829                      where <code class="computeroutput"><span class="identifier">a2</span></code> of
830                      type <code class="computeroutput"><span class="identifier">A2</span></code> is
831                      a rebound copy of <code class="computeroutput"><span class="identifier">base</span><span class="special">()</span></code> where its <code class="computeroutput"><span class="identifier">value_type</span></code>
832                      is implementation defined.
833                    </p></dd>
834</dl>
835</div></dd>
836</dl>
837</div>
838<h6>
839<a name="align.reference.classes.aligned_allocator_adaptor.h3"></a>
840          <span class="phrase"><a name="align.reference.classes.aligned_allocator_adaptor.global_operators"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_allocator_adaptor.global_operators">Global
841          operators</a>
842        </h6>
843<div class="variablelist">
844<p class="title"><b></b></p>
845<dl class="variablelist">
846<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;</span> <span class="identifier">a1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="identifier">A2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;</span>
847            <span class="identifier">a2</span><span class="special">)</span>
848            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
849<dd><div class="variablelist">
850<p class="title"><b></b></p>
851<dl class="variablelist">
852<dt><span class="term">Returns</span></dt>
853<dd><p>
854                      <code class="computeroutput"><span class="identifier">a1</span><span class="special">.</span><span class="identifier">base</span><span class="special">()</span>
855                      <span class="special">==</span> <span class="identifier">a2</span><span class="special">.</span><span class="identifier">base</span><span class="special">()</span></code>
856                    </p></dd>
857</dl>
858</div></dd>
859<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Alignment</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;</span> <span class="identifier">a1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">&lt;</span><span class="identifier">A2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">&gt;&amp;</span>
860            <span class="identifier">a2</span><span class="special">)</span>
861            <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
862<dd><div class="variablelist">
863<p class="title"><b></b></p>
864<dl class="variablelist">
865<dt><span class="term">Returns</span></dt>
866<dd><p>
867                      <code class="computeroutput"><span class="special">!(</span><span class="identifier">a1</span>
868                      <span class="special">==</span> <span class="identifier">a2</span><span class="special">)</span></code>
869                    </p></dd>
870</dl>
871</div></dd>
872</dl>
873</div>
874</div>
875<div class="section">
876<div class="titlepage"><div><div><h4 class="title">
877<a name="align.reference.classes.aligned_delete"></a><a class="link" href="reference.html#align.reference.classes.aligned_delete" title="aligned_delete">aligned_delete</a>
878</h4></div></div></div>
879<div class="variablelist">
880<p class="title"><b></b></p>
881<dl class="variablelist">
882<dt><span class="term"><code class="computeroutput"><span class="keyword">class</span> <span class="identifier">aligned_delete</span><span class="special">;</span></code></span></dt>
883<dd><div class="variablelist">
884<p class="title"><b></b></p>
885<dl class="variablelist">
886<dt><span class="term">Header</span></dt>
887<dd><p>
888                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">aligned_delete</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
889                    </p></dd>
890</dl>
891</div></dd>
892</dl>
893</div>
894<h6>
895<a name="align.reference.classes.aligned_delete.h0"></a>
896          <span class="phrase"><a name="align.reference.classes.aligned_delete.member_operators"></a></span><a class="link" href="reference.html#align.reference.classes.aligned_delete.member_operators">Member
897          operators</a>
898        </h6>
899<div class="variablelist">
900<p class="title"><b></b></p>
901<dl class="variablelist">
902<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">(</span><span class="keyword">noexcept</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">-&gt;~</span><span class="identifier">T</span><span class="special">()));</span></code></span></dt>
903<dd><div class="variablelist">
904<p class="title"><b></b></p>
905<dl class="variablelist">
906<dt><span class="term">Effects</span></dt>
907<dd><p>
908                      Calls <code class="computeroutput"><span class="special">~</span><span class="identifier">T</span><span class="special">()</span></code> on <code class="computeroutput"><span class="identifier">ptr</span></code>
909                      to destroy the object and then calls <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code> on <code class="computeroutput"><span class="identifier">ptr</span></code>
910                      to free the allocated memory.
911                    </p></dd>
912<dt><span class="term">Note</span></dt>
913<dd><p>
914                      If <code class="computeroutput"><span class="identifier">T</span></code> is an
915                      incomplete type, the program is ill-formed.
916                    </p></dd>
917</dl>
918</div></dd>
919</dl>
920</div>
921</div>
922</div>
923<div class="section">
924<div class="titlepage"><div><div><h3 class="title">
925<a name="align.reference.traits"></a><a class="link" href="reference.html#align.reference.traits" title="Traits">Traits</a>
926</h3></div></div></div>
927<div class="toc"><dl class="toc"><dt><span class="section"><a href="reference.html#align.reference.traits.alignment_of">alignment_of</a></span></dt></dl></div>
928<div class="section">
929<div class="titlepage"><div><div><h4 class="title">
930<a name="align.reference.traits.alignment_of"></a><a class="link" href="reference.html#align.reference.traits.alignment_of" title="alignment_of">alignment_of</a>
931</h4></div></div></div>
932<div class="variablelist">
933<p class="title"><b></b></p>
934<dl class="variablelist">
935<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">struct</span>
936            <span class="identifier">alignment_of</span><span class="special">;</span></code></span></dt>
937<dd><div class="variablelist">
938<p class="title"><b></b></p>
939<dl class="variablelist">
940<dt><span class="term">Header</span></dt>
941<dd><p>
942                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">alignment_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
943                    </p></dd>
944<dt><span class="term">Value</span></dt>
945<dd><p>
946                      The alignment requirement of the type <code class="computeroutput"><span class="identifier">T</span></code>
947                      as an integral constant of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>.
948                      When <code class="computeroutput"><span class="identifier">T</span></code> is a
949                      reference array type, the value shall be the alignment of the
950                      referenced type. When <code class="computeroutput"><span class="identifier">T</span></code>
951                      is an array type, the value shall be the alignment of the element
952                      type.
953                    </p></dd>
954<dt><span class="term">Requires</span></dt>
955<dd><p>
956                      <code class="computeroutput"><span class="identifier">T</span></code> shall be
957                      a complete object type, or an array thereof, or a reference
958                      to one of those types.
959                    </p></dd>
960</dl>
961</div></dd>
962</dl>
963</div>
964</div>
965</div>
966<div class="section">
967<div class="titlepage"><div><div><h3 class="title">
968<a name="align.reference.macros"></a><a class="link" href="reference.html#align.reference.macros" title="Macros">Macros</a>
969</h3></div></div></div>
970<div class="toc"><dl class="toc"><dt><span class="section"><a href="reference.html#align.reference.macros.boost_align_assume_aligned">BOOST_ALIGN_ASSUME_ALIGNED</a></span></dt></dl></div>
971<div class="section">
972<div class="titlepage"><div><div><h4 class="title">
973<a name="align.reference.macros.boost_align_assume_aligned"></a><a class="link" href="reference.html#align.reference.macros.boost_align_assume_aligned" title="BOOST_ALIGN_ASSUME_ALIGNED">BOOST_ALIGN_ASSUME_ALIGNED</a>
974</h4></div></div></div>
975<div class="variablelist">
976<p class="title"><b></b></p>
977<dl class="variablelist">
978<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_ALIGN_ASSUME_ALIGNED</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">alignment</span><span class="special">)</span></code></span></dt>
979<dd><div class="variablelist">
980<p class="title"><b></b></p>
981<dl class="variablelist">
982<dt><span class="term">Header</span></dt>
983<dd><p>
984                      <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">align</span><span class="special">/</span><span class="identifier">assume_aligned</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
985                    </p></dd>
986<dt><span class="term">Requires</span></dt>
987<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
988<li class="listitem">
989                          <code class="computeroutput"><span class="identifier">alignment</span></code>
990                          shall be a power of two
991                        </li>
992<li class="listitem">
993                          <code class="computeroutput"><span class="identifier">ptr</span></code> shall
994                          be mutable
995                        </li>
996</ul></div></dd>
997<dt><span class="term">Effects</span></dt>
998<dd>
999                      <code class="computeroutput"><span class="identifier">ptr</span></code> may be
1000                      modified in an implementation specific way to inform the compiler
1001                      of its alignment.
1002                    </dd>
1003</dl>
1004</div></dd>
1005</dl>
1006</div>
1007</div>
1008</div>
1009</div>
1010<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1011<td align="left"></td>
1012<td align="right"><div class="copyright-footer">Copyright © 2014-2017 Glen
1013      Joseph Fernandes<p>
1014        Distributed under the Boost Software License, Version 1.0.
1015      </p>
1016</div></td>
1017</tr></table>
1018<hr>
1019<div class="spirit-nav">
1020<a accesskey="p" href="examples.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../align.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="vocabulary.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
1021</div>
1022</body>
1023</html>
1024