1024 lines
75 KiB
HTML
1024 lines
75 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<title>Reference</title>
|
||
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
||
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
|
||
<link rel="up" href="../align.html" title="Chapter 3. Boost.Align">
|
||
<link rel="prev" href="examples.html" title="Examples">
|
||
<link rel="next" href="vocabulary.html" title="Vocabulary">
|
||
</head>
|
||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||
<table cellpadding="2" width="100%"><tr>
|
||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
|
||
<td align="center"><a href="../../../index.html">Home</a></td>
|
||
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
|
||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||
<td align="center"><a href="../../../more/index.htm">More</a></td>
|
||
</tr></table>
|
||
<hr>
|
||
<div class="spirit-nav">
|
||
<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>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||
<a name="align.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
|
||
</h2></div></div></div>
|
||
<div class="toc"><dl class="toc">
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions">Functions</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.classes">Classes</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.traits">Traits</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.macros">Macros</a></span></dt>
|
||
</dl></div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h3 class="title">
|
||
<a name="align.reference.functions"></a><a class="link" href="reference.html#align.reference.functions" title="Functions">Functions</a>
|
||
</h3></div></div></div>
|
||
<div class="toc"><dl class="toc">
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.align">align</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.align_up">align_up</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.align_down">align_down</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.aligned_alloc">aligned_alloc</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.aligned_free">aligned_free</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.functions.is_aligned">is_aligned</a></span></dt>
|
||
</dl></div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<a name="align.reference.functions.align"></a><a class="link" href="reference.html#align.reference.functions.align" title="align">align</a>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span><span class="special">*</span>
|
||
<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>
|
||
<span class="identifier">size</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">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&</span>
|
||
<span class="identifier">space</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
If it is possible to fit <code class="computeroutput"><span class="identifier">size</span></code>
|
||
bytes of storage aligned by <code class="computeroutput"><span class="identifier">alignment</span></code>
|
||
into the buffer pointed to by <code class="computeroutput"><span class="identifier">ptr</span></code>
|
||
with length <code class="computeroutput"><span class="identifier">space</span></code>,
|
||
the function updates <code class="computeroutput"><span class="identifier">ptr</span></code>
|
||
to point to the first possible address of such storage and
|
||
decreases <code class="computeroutput"><span class="identifier">space</span></code>
|
||
by the number of bytes used for alignment. Otherwise, the function
|
||
does nothing.
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code>
|
||
shall be a power of two
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> shall
|
||
point to contiguous storage of at least <code class="computeroutput"><span class="identifier">space</span></code>
|
||
bytes
|
||
</li>
|
||
</ul></div></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd>
|
||
A null pointer if the requested aligned buffer would not fit
|
||
into the available space, otherwise the adjusted value of
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code>.
|
||
</dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
The function updates its <code class="computeroutput"><span class="identifier">ptr</span></code>
|
||
and <code class="computeroutput"><span class="identifier">space</span></code> arguments
|
||
so that it can be called repeatedly with possibly different
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> and
|
||
<code class="computeroutput"><span class="identifier">size</span></code>arguments
|
||
for the same buffer.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">constexpr</span>
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Constraints</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">T</span></code> is not a
|
||
pointer type
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> shall
|
||
be a power of two
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A value at or after <code class="computeroutput"><span class="identifier">value</span></code>
|
||
that is a multiple of <code class="computeroutput"><span class="identifier">alignment</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">constexpr</span>
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Constraints</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">T</span></code> is not a
|
||
pointer type
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> shall
|
||
be a power of two
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A value at or before <code class="computeroutput"><span class="identifier">value</span></code>
|
||
that is a multiple of <code class="computeroutput"><span class="identifier">alignment</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">void</span><span class="special">*</span>
|
||
<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>
|
||
<span class="identifier">size</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Allocates space for an object whose alignment is specified
|
||
by <code class="computeroutput"><span class="identifier">alignment</span></code>,
|
||
whose size is specified by <code class="computeroutput"><span class="identifier">size</span></code>,
|
||
and whose value is indeterminate.
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> shall
|
||
be a power of two.
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A null pointer or a pointer to the allocated space.
|
||
</p></dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
On certain platforms, the space allocated may be slightly larger
|
||
than <code class="computeroutput"><span class="identifier">size</span></code> bytes,
|
||
to allow for alignment.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Causes the space pointed to by <code class="computeroutput"><span class="identifier">ptr</span></code>
|
||
to be deallocated, that is, made available for further allocation.
|
||
If <code class="computeroutput"><span class="identifier">ptr</span></code> is a
|
||
null pointer, no action occurs. Otherwise, if the argument
|
||
does not match a pointer earlier returned by the <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">()</span></code>
|
||
function, or if the space has been deallocated by a call to
|
||
<code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code>, the behavior is undefined.
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> is a null
|
||
pointer or a pointer earlier returned by the <code class="computeroutput"><span class="identifier">aligned_alloc</span><span class="special">()</span></code>
|
||
function that has not been deallocated by a call to <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
The <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">()</span></code> function returns no value.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<span class="identifier">alignment</span><span class="special">)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> shall
|
||
be a power of two.
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">ptr</span></code> is aligned on the boundary
|
||
specified by <code class="computeroutput"><span class="identifier">alignment</span></code>,
|
||
otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">constexpr</span>
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Constraints</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">T</span></code> is not a
|
||
pointer type
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code> shall
|
||
be a power of two.
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">true</span></code> if the value
|
||
of <code class="computeroutput"><span class="identifier">value</span></code> is
|
||
aligned on the boundary specified by <code class="computeroutput"><span class="identifier">alignment</span></code>,
|
||
otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h3 class="title">
|
||
<a name="align.reference.classes"></a><a class="link" href="reference.html#align.reference.classes" title="Classes">Classes</a>
|
||
</h3></div></div></div>
|
||
<div class="toc"><dl class="toc">
|
||
<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_allocator">aligned_allocator</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_allocator_adaptor">aligned_allocator_adaptor</a></span></dt>
|
||
<dt><span class="section"><a href="reference.html#align.reference.classes.aligned_delete">aligned_delete</a></span></dt>
|
||
</dl></div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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>
|
||
<span class="identifier">Alignment</span> <span class="special">=</span>
|
||
<span class="number">1</span><span class="special">></span>
|
||
<span class="keyword">class</span> <span class="identifier">aligned_allocator</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
Using the aligned allocator with a minimum Alignment value
|
||
is generally only useful with containers that are not node-based
|
||
such as <code class="computeroutput"><span class="identifier">vector</span></code>.
|
||
With node-based containers, such as <code class="computeroutput"><span class="identifier">list</span></code>,
|
||
the node object would have the minimum alignment instead of
|
||
the value type object.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator.h0"></a>
|
||
<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
|
||
types</a>
|
||
</h6>
|
||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">T</span>
|
||
<span class="identifier">value_type</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<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>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
|
||
<span class="identifier">T</span><span class="special">*</span>
|
||
<span class="identifier">const_pointer</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<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>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
|
||
<span class="keyword">void</span><span class="special">*</span>
|
||
<span class="identifier">const_void_pointer</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<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"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">reference</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<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"><</span><span class="keyword">const</span>
|
||
<span class="identifier">T</span><span class="special">></span>
|
||
<span class="identifier">const_reference</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
|
||
<span class="identifier">size_type</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
|
||
<span class="identifier">difference_type</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span>
|
||
<span class="identifier">propagate_on_container_move_assignment</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span>
|
||
<span class="identifier">is_always_equal</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">struct</span>
|
||
<span class="identifier">rebind</span> <span class="special">{</span>
|
||
<span class="keyword">typedef</span> <span class="identifier">aligned_allocator</span><span class="special"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">></span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span></code>
|
||
</li>
|
||
</ol></div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator.h1"></a>
|
||
<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>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Constructs the allocator.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Constructs the allocator.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator.h2"></a>
|
||
<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
|
||
functions</a>
|
||
</h6>
|
||
<p>
|
||
Except for the destructor, member functions of the aligned allocator shall
|
||
not introduce data races as a result of concurrent calls to those member
|
||
functions from different threads. Calls to these functions that allocate
|
||
or deallocate a particular unit of storage shall occur in a single total
|
||
order, and each such deallocation call shall happen before the next allocation
|
||
(if any) in this order.
|
||
</p>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<span class="identifier">size</span><span class="special">,</span>
|
||
<span class="identifier">const_void_pointer</span> <span class="special">=</span>
|
||
<span class="number">0</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A pointer to the initial element of an array of storage of
|
||
size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
|
||
<span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>,
|
||
aligned on the maximum of the minimum alignment specified and
|
||
the alignment of objects of type <code class="computeroutput"><span class="identifier">T</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Remark</span></dt>
|
||
<dd><p>
|
||
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>.
|
||
</p></dd>
|
||
<dt><span class="term">Throws</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> if the storage
|
||
cannot be obtained.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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>
|
||
<span class="identifier">ptr</span><span class="special">,</span>
|
||
<span class="identifier">size_type</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> shall be
|
||
a pointer value obtained from <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Deallocates the storage referenced by <code class="computeroutput"><span class="identifier">ptr</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Remark</span></dt>
|
||
<dd><p>
|
||
Uses <code class="computeroutput"><span class="identifier">aligned_free</span><span class="special">(</span><span class="keyword">void</span><span class="special">*)</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
The largest value <code class="computeroutput"><span class="identifier">N</span></code>
|
||
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.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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">></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">&&...</span>
|
||
<span class="identifier">args</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
<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"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...)</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">ptr</span><span class="special">->~</span><span class="identifier">U</span><span class="special">()</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator.h3"></a>
|
||
<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
|
||
operators</a>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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">></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"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&,</span> <span class="keyword">const</span>
|
||
<span class="identifier">aligned_allocator</span><span class="special"><</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">true</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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">></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"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&,</span> <span class="keyword">const</span>
|
||
<span class="identifier">aligned_allocator</span><span class="special"><</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">false</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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>
|
||
<span class="identifier">Alignment</span> <span class="special">=</span>
|
||
<span class="number">1</span><span class="special">></span>
|
||
<span class="keyword">class</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
This adaptor can be used with a C++11 Allocator whose pointer
|
||
type is a smart pointer but the adaptor can choose to expose
|
||
only raw pointer types.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator_adaptor.h0"></a>
|
||
<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
|
||
types</a>
|
||
</h6>
|
||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
|
||
<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>
|
||
</li>
|
||
<li class="listitem">
|
||
<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>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
|
||
<span class="identifier">value_type</span><span class="special">*</span>
|
||
<span class="identifier">const_pointer</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<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>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">const</span>
|
||
<span class="keyword">void</span><span class="special">*</span>
|
||
<span class="identifier">const_void_pointer</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
|
||
<span class="identifier">size_type</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
|
||
<span class="identifier">difference_type</span><span class="special">;</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">struct</span>
|
||
<span class="identifier">rebind</span> <span class="special">{</span>
|
||
<span class="keyword">typedef</span> <span class="identifier">aligned_allocator_adaptor</span><span class="special"><</span><span class="keyword">typename</span>
|
||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_traits</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">>::</span><span class="keyword">template</span> <span class="identifier">rebind_alloc</span><span class="special"><</span><span class="identifier">U</span><span class="special">>,</span> <span class="identifier">Alignment</span><span class="special">></span> <span class="identifier">other</span><span class="special">;</span> <span class="special">};</span></code>
|
||
</li>
|
||
</ol></div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator_adaptor.h1"></a>
|
||
<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>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Value-initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
|
||
base class.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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="identifier">aligned_allocator_adaptor</span><span class="special">(</span><span class="identifier">A</span><span class="special">&&</span> <span class="identifier">alloc</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">Allocator</span></code> shall
|
||
be constructible from <code class="computeroutput"><span class="identifier">A</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
|
||
base class with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">A</span><span class="special">>(</span><span class="identifier">alloc</span><span class="special">)</span></code>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></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"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&</span>
|
||
<span class="identifier">other</span><span class="special">)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">Allocator</span></code> shall
|
||
be constructible from <code class="computeroutput"><span class="identifier">A</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
Initializes the <code class="computeroutput"><span class="identifier">Allocator</span></code>
|
||
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>.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator_adaptor.h2"></a>
|
||
<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
|
||
functions</a>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="identifier">Allocator</span><span class="special">&</span>
|
||
<span class="identifier">base</span><span class="special">()</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">&>(*</span><span class="keyword">this</span><span class="special">)</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">const</span> <span class="identifier">Allocator</span><span class="special">&</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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">Allocator</span><span class="special">&>(*</span><span class="keyword">this</span><span class="special">)</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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>
|
||
<span class="identifier">size</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A pointer to the initial element of an array of storage of
|
||
size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
|
||
<span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">)</span></code>,
|
||
aligned on the maximum of the minimum alignment specified and
|
||
the alignment of objects of type <code class="computeroutput"><span class="identifier">value_type</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Remark</span></dt>
|
||
<dd><p>
|
||
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>
|
||
of type <code class="computeroutput"><span class="identifier">A2</span></code>
|
||
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>
|
||
is implementation defined.
|
||
</p></dd>
|
||
<dt><span class="term">Throws</span></dt>
|
||
<dd><p>
|
||
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
|
||
obtained.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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>
|
||
<span class="identifier">size</span><span class="special">,</span>
|
||
<span class="identifier">const_void_pointer</span> <span class="identifier">hint</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">hint</span></code> is a value
|
||
obtained by calling <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code> on any equivalent allocator
|
||
object, or else a null pointer.
|
||
</p></dd>
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
A pointer to the initial element of an array of storage of
|
||
size <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
|
||
<span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">)</span></code>,
|
||
aligned on the maximum of the minimum alignment specified and
|
||
the alignment of objects of type <code class="computeroutput"><span class="identifier">value_type</span></code>.
|
||
</p></dd>
|
||
<dt><span class="term">Remark</span></dt>
|
||
<dd><p>
|
||
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>
|
||
of type <code class="computeroutput"><span class="identifier">A2</span></code>
|
||
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>
|
||
is an implementation defined.
|
||
</p></dd>
|
||
<dt><span class="term">Throws</span></dt>
|
||
<dd><p>
|
||
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
|
||
obtained.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<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>
|
||
<span class="identifier">ptr</span><span class="special">,</span>
|
||
<span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">);</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> shall
|
||
be a pointer value obtained from <code class="computeroutput"><span class="identifier">allocate</span><span class="special">()</span></code>
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">size</span></code> shall
|
||
equal the value passed as the first argument to the invocation
|
||
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>.
|
||
</li>
|
||
</ul></div></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd>
|
||
Deallocates the storage referenced by <code class="computeroutput"><span class="identifier">ptr</span></code>.
|
||
</dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
Uses <code class="computeroutput"><span class="identifier">A2</span><span class="special">::</span><span class="identifier">deallocate</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> of
|
||
type <code class="computeroutput"><span class="identifier">A2</span></code> 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>
|
||
is implementation defined.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_allocator_adaptor.h3"></a>
|
||
<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
|
||
operators</a>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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">></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"><</span><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&</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"><</span><span class="identifier">A2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&</span>
|
||
<span class="identifier">a2</span><span class="special">)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">a1</span><span class="special">.</span><span class="identifier">base</span><span class="special">()</span>
|
||
<span class="special">==</span> <span class="identifier">a2</span><span class="special">.</span><span class="identifier">base</span><span class="special">()</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</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">></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"><</span><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&</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"><</span><span class="identifier">A2</span><span class="special">,</span> <span class="identifier">Alignment</span><span class="special">>&</span>
|
||
<span class="identifier">a2</span><span class="special">)</span>
|
||
<span class="keyword">noexcept</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Returns</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="special">!(</span><span class="identifier">a1</span>
|
||
<span class="special">==</span> <span class="identifier">a2</span><span class="special">)</span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
<h6>
|
||
<a name="align.reference.classes.aligned_delete.h0"></a>
|
||
<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
|
||
operators</a>
|
||
</h6>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</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="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">->~</span><span class="identifier">T</span><span class="special">()));</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd><p>
|
||
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>
|
||
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>
|
||
to free the allocated memory.
|
||
</p></dd>
|
||
<dt><span class="term">Note</span></dt>
|
||
<dd><p>
|
||
If <code class="computeroutput"><span class="identifier">T</span></code> is an
|
||
incomplete type, the program is ill-formed.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h3 class="title">
|
||
<a name="align.reference.traits"></a><a class="link" href="reference.html#align.reference.traits" title="Traits">Traits</a>
|
||
</h3></div></div></div>
|
||
<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>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term"><code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span>
|
||
<span class="identifier">alignment_of</span><span class="special">;</span></code></span></dt>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Value</span></dt>
|
||
<dd><p>
|
||
The alignment requirement of the type <code class="computeroutput"><span class="identifier">T</span></code>
|
||
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>.
|
||
When <code class="computeroutput"><span class="identifier">T</span></code> is a
|
||
reference array type, the value shall be the alignment of the
|
||
referenced type. When <code class="computeroutput"><span class="identifier">T</span></code>
|
||
is an array type, the value shall be the alignment of the element
|
||
type.
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="identifier">T</span></code> shall be
|
||
a complete object type, or an array thereof, or a reference
|
||
to one of those types.
|
||
</p></dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h3 class="title">
|
||
<a name="align.reference.macros"></a><a class="link" href="reference.html#align.reference.macros" title="Macros">Macros</a>
|
||
</h3></div></div></div>
|
||
<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>
|
||
<div class="section">
|
||
<div class="titlepage"><div><div><h4 class="title">
|
||
<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>
|
||
</h4></div></div></div>
|
||
<div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<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>
|
||
<dd><div class="variablelist">
|
||
<p class="title"><b></b></p>
|
||
<dl class="variablelist">
|
||
<dt><span class="term">Header</span></dt>
|
||
<dd><p>
|
||
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
|
||
</p></dd>
|
||
<dt><span class="term">Requires</span></dt>
|
||
<dd><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">alignment</span></code>
|
||
shall be a power of two
|
||
</li>
|
||
<li class="listitem">
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> shall
|
||
be mutable
|
||
</li>
|
||
</ul></div></dd>
|
||
<dt><span class="term">Effects</span></dt>
|
||
<dd>
|
||
<code class="computeroutput"><span class="identifier">ptr</span></code> may be
|
||
modified in an implementation specific way to inform the compiler
|
||
of its alignment.
|
||
</dd>
|
||
</dl>
|
||
</div></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||
<td align="left"></td>
|
||
<td align="right"><div class="copyright-footer">Copyright © 2014-2017 Glen
|
||
Joseph Fernandes<p>
|
||
Distributed under the Boost Software License, Version 1.0.
|
||
</p>
|
||
</div></td>
|
||
</tr></table>
|
||
<hr>
|
||
<div class="spirit-nav">
|
||
<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>
|
||
</div>
|
||
</body>
|
||
</html>
|