Sophie

Sophie

distrib > Mageia > 6 > armv5tl > by-pkgid > 37eb773c4f50677290a7937043b43933 > files > 463

boost-devel-doc-1.60.0-6.1.mga6.noarch.rpm

<!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=US-ASCII">
<title>Class template scoped_allocator_adaptor</title>
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../../boost_container_header_reference.html#header.boost.container.scoped_allocator_hpp" title="Header &lt;boost/container/scoped_allocator.hpp&gt;">
<link rel="prev" href="pmr/unsynchr_idm46583871327984.html" title="Class unsynchronized_pool_resource">
<link rel="next" href="scoped_allocator_adaptor/rebind.html" title="Struct template rebind">
</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="pmr/unsynchr_idm46583871327984.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_container_header_reference.html#header.boost.container.scoped_allocator_hpp"><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="scoped_allocator_adaptor/rebind.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="boost.container.scoped_allocator_adaptor"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Class template scoped_allocator_adaptor</span></h2>
<p>boost::container::scoped_allocator_adaptor</p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../boost_container_header_reference.html#header.boost.container.scoped_allocator_hpp" title="Header &lt;boost/container/scoped_allocator.hpp&gt;">boost/container/scoped_allocator.hpp</a>&gt;

</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterAlloc<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> InnerAllocs<span class="special">&gt;</span> 
<span class="keyword">class</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
  <span class="comment">// <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptortypes">types</a></span>
  <span class="keyword">typedef</span> <span class="identifier">OuterAlloc</span>                                        <a name="boost.container.scoped_allocator_adaptor.outer_allocator_type"></a><span class="identifier">outer_allocator_type</span><span class="special">;</span>                  
  <span class="keyword">typedef</span> <a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a><span class="special">&lt;</span> <span class="identifier">OuterAlloc</span> <span class="special">&gt;</span>                    <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.outer_traits_type"><span class="identifier">outer_traits_type</span></a><span class="special">;</span>                     
  <span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">inner_allocator_type</span>                   <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.inner_allocator_type"><span class="identifier">inner_allocator_type</span></a><span class="special">;</span>                  
  <span class="keyword">typedef</span> <a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a><span class="special">&lt;</span> <span class="identifier">inner_allocator_type</span> <span class="special">&gt;</span>          <a name="boost.container.scoped_allocator_adaptor.inner_traits_type"></a><span class="identifier">inner_traits_type</span><span class="special">;</span>                     
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">value_type</span>                     <a name="boost.container.scoped_allocator_adaptor.value_type"></a><span class="identifier">value_type</span><span class="special">;</span>                            
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">size_type</span>                      <a name="boost.container.scoped_allocator_adaptor.size_type"></a><span class="identifier">size_type</span><span class="special">;</span>                             
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">difference_type</span>                <a name="boost.container.scoped_allocator_adaptor.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span>                       
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">pointer</span>                        <a name="boost.container.scoped_allocator_adaptor.pointer"></a><span class="identifier">pointer</span><span class="special">;</span>                               
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">const_pointer</span>                  <a name="boost.container.scoped_allocator_adaptor.const_pointer"></a><span class="identifier">const_pointer</span><span class="special">;</span>                         
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">void_pointer</span>                   <a name="boost.container.scoped_allocator_adaptor.void_pointer"></a><span class="identifier">void_pointer</span><span class="special">;</span>                          
  <span class="keyword">typedef</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="identifier">const_void_pointer</span>             <a name="boost.container.scoped_allocator_adaptor.const_void_pointer"></a><span class="identifier">const_void_pointer</span><span class="special">;</span>                    
  <span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_copy_assignment</span> <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.propagat_idm46583871214480"><span class="identifier">propagate_on_container_copy_assignment</span></a><span class="special">;</span>
  <span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_move_assignment</span> <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.propagat_idm46583871210288"><span class="identifier">propagate_on_container_move_assignment</span></a><span class="special">;</span>
  <span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_swap</span>            <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.propagat_idm46583871206096"><span class="identifier">propagate_on_container_swap</span></a><span class="special">;</span>           
  <span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">is_always_equal</span>                        <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptor.is_always_equal"><span class="identifier">is_always_equal</span></a><span class="special">;</span>                       

  <span class="comment">// member classes/structs/unions</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> U<span class="special">&gt;</span> 
  <span class="keyword">struct</span> <a class="link" href="scoped_allocator_adaptor/rebind.html" title="Struct template rebind">rebind</a> <span class="special">{</span>
    <span class="comment">// types</span>
    <span class="keyword">typedef</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">outer_traits_type</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">portable_rebind_alloc</span><span class="special">&lt;</span> <span class="identifier">U</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">InnerAllocs</span><span class="special">...</span><span class="special">&gt;</span> <a class="link" href="scoped_allocator_adaptor/rebind.html#boost.container.scoped_allocator_adaptor.rebind.other"><span class="identifier">other</span></a><span class="special">;</span>
  <span class="special">}</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="scoped_allocator_adaptor.html#boost.container.scoped_allocator_adaptorconstruct-copy-destruct">construct/copy/destruct</a></span>
  <a class="link" href="scoped_allocator_adaptor.html#idm46583871148112-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html#idm46583871146496-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html#idm46583871144000-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
    <a class="link" href="scoped_allocator_adaptor.html#idm46583871141664-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><span class="identifier">OuterA2</span> <span class="special">&amp;&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">InnerAllocs</span> <span class="special">&amp;</span><span class="special">...</span><span class="special">)</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
    <a class="link" href="scoped_allocator_adaptor.html#idm46583871137072-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a><span class="special">&lt;</span> <span class="identifier">OuterA2</span><span class="special">,</span> <span class="identifier">InnerAllocs</span><span class="special">...</span><span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
    <a class="link" href="scoped_allocator_adaptor.html#idm46583871132832-bb"><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a><span class="special">&lt;</span> <span class="identifier">OuterA2</span><span class="special">,</span> <span class="identifier">InnerAllocs</span><span class="special">...</span><span class="special">&gt;</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871128752-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871126720-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html#idm46583871146784-bb"><span class="special">~</span><span class="identifier">scoped_allocator_adaptor</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="scoped_allocator_adaptor.html#idm46583871197808-bb">public member functions</a></span>
  <span class="keyword">void</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871197248-bb"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="identifier">outer_allocator_type</span> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871194432-bb"><span class="identifier">outer_allocator</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="keyword">const</span> <span class="identifier">outer_allocator_type</span> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871191872-bb"><span class="identifier">outer_allocator</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="identifier">inner_allocator_type</span> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871189296-bb"><span class="identifier">inner_allocator</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="identifier">inner_allocator_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871186736-bb"><span class="identifier">inner_allocator</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="identifier">size_type</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871184160-bb"><span class="identifier">max_size</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">void</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871181568-bb"><span class="identifier">destroy</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">*</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
  <span class="identifier">pointer</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871177440-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
  <span class="identifier">pointer</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871174432-bb"><span class="identifier">allocate</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">,</span> <span class="identifier">const_void_pointer</span><span class="special">)</span><span class="special">;</span>
  <span class="keyword">void</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871170736-bb"><span class="identifier">deallocate</span></a><span class="special">(</span><span class="identifier">pointer</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span>
  <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <a class="link" href="scoped_allocator_adaptor.html#idm46583871167040-bb"><span class="identifier">select_on_container_copy_construction</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> Args<span class="special">&gt;</span> <span class="keyword">void</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871163408-bb"><span class="identifier">construct</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">*</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span><span class="special">...</span><span class="special">)</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="scoped_allocator_adaptor.html#idm46583871124848-bb">friend functions</a></span>
  <span class="keyword">friend</span> <span class="keyword">void</span> <a class="link" href="scoped_allocator_adaptor.html#idm46583871124288-bb"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span><span class="special">,</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span></pre></div>
<div class="refsect1">
<a name="idm45555397353120"></a><h2>Description</h2>
<p>This class is a C++03-compatible implementation of std::scoped_allocator_adaptor. The class template <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> is an allocator template that specifies the memory resource (the outer allocator) to be used by a container (as any other allocator does) and also specifies an inner allocator resource to be passed to the constructor of every element within the container.</p>
<p>This adaptor is instantiated with one outer and zero or more inner allocator types. If instantiated with only one allocator type, the inner allocator becomes the <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> itself, thus using the same allocator resource for the container and every element within the container and, if the elements themselves are containers, each of their elements recursively. If instantiated with more than one allocator, the first allocator is the outer allocator for use by the container, the second allocator is passed to the constructors of the container's elements, and, if the elements themselves are containers, the third allocator is passed to the elements' elements, and so on. If containers are nested to a depth greater than the number of allocators, the last allocator is used repeatedly, as in the single-allocator case, for any remaining recursions.</p>
<p>[<span class="bold"><strong>Note</strong></span>: The <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> is derived from the outer allocator type so it can be substituted for the outer allocator type in most expressions. -end note]</p>
<p>In the construct member functions, <code class="computeroutput">OUTERMOST(x)</code> is x if x does not have an <code class="computeroutput">outer_allocator()</code> member function and <code class="computeroutput">OUTERMOST(x.outer_allocator())</code> otherwise; <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(x)</code> is <code class="computeroutput">allocator_traits&lt;decltype(OUTERMOST(x))&gt;</code>.</p>
<p>[<span class="bold"><strong>Note</strong></span>: <code class="computeroutput">OUTERMOST(x)</code> and <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(x)</code> are recursive operations. It is incumbent upon the definition of <code class="computeroutput">outer_allocator()</code> to ensure that the recursion terminates. It will terminate for all instantiations of <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a>. -end note] </p>
<div class="refsect2">
<a name="idm45555397339024"></a><h3>
<a name="boost.container.scoped_allocator_adaptortypes"></a><code class="computeroutput">scoped_allocator_adaptor</code> 
        public
       types</h3>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<p>
<span class="keyword">typedef</span> <a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a><span class="special">&lt;</span> <span class="identifier">OuterAlloc</span> <span class="special">&gt;</span> <a name="boost.container.scoped_allocator_adaptor.outer_traits_type"></a><span class="identifier">outer_traits_type</span><span class="special">;</span></p>
<p>Type: For exposition only </p>
</li>
<li class="listitem">
<p>
<span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">inner_allocator_type</span> <a name="boost.container.scoped_allocator_adaptor.inner_allocator_type"></a><span class="identifier">inner_allocator_type</span><span class="special">;</span></p>
<p>Type: <code class="computeroutput">scoped_allocator_adaptor&lt;OuterAlloc&gt;</code> if <code class="computeroutput">sizeof...(InnerAllocs)</code> is zero; otherwise, <code class="computeroutput">scoped_allocator_adaptor&lt;InnerAllocs...&gt;</code>. </p>
</li>
<li class="listitem">
<p>
<span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_copy_assignment</span> <a name="boost.container.scoped_allocator_adaptor.propagat_idm46583871214480"></a><span class="identifier">propagate_on_container_copy_assignment</span><span class="special">;</span></p>
<p>Type: A type with a constant boolean <code class="computeroutput">value</code> == true if <code class="computeroutput"><a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a>&lt;Allocator&gt;:: propagate_on_container_copy_assignment::value</code> is true for any <code class="computeroutput">Allocator</code> in the set of <code class="computeroutput">OuterAlloc</code> and <code class="computeroutput">InnerAllocs...</code>, false otherwise. </p>
</li>
<li class="listitem">
<p>
<span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_move_assignment</span> <a name="boost.container.scoped_allocator_adaptor.propagat_idm46583871210288"></a><span class="identifier">propagate_on_container_move_assignment</span><span class="special">;</span></p>
<p>Type: A type with a constant boolean <code class="computeroutput">value</code> == true if <code class="computeroutput"><a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a>&lt;Allocator&gt;:: propagate_on_container_move_assignment::value</code> is true for any <code class="computeroutput">Allocator</code> in the set of <code class="computeroutput">OuterAlloc</code> and <code class="computeroutput">InnerAllocs...</code>, false otherwise. </p>
</li>
<li class="listitem">
<p>
<span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">propagate_on_container_swap</span> <a name="boost.container.scoped_allocator_adaptor.propagat_idm46583871206096"></a><span class="identifier">propagate_on_container_swap</span><span class="special">;</span></p>
<p>Type: A type with a constant boolean <code class="computeroutput">value</code> == true if <code class="computeroutput"><a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a>&lt;Allocator&gt;:: propagate_on_container_swap::value</code> is true for any <code class="computeroutput">Allocator</code> in the set of <code class="computeroutput">OuterAlloc</code> and <code class="computeroutput">InnerAllocs...</code>, false otherwise. </p>
</li>
<li class="listitem">
<p>
<span class="keyword">typedef</span> <span class="identifier">base_type</span><span class="special">::</span><span class="identifier">is_always_equal</span> <a name="boost.container.scoped_allocator_adaptor.is_always_equal"></a><span class="identifier">is_always_equal</span><span class="special">;</span></p>
<p>Type: A type with a constant boolean <code class="computeroutput">value</code> == true if <code class="computeroutput"><a class="link" href="allocator_traits.html" title="Struct template allocator_traits">allocator_traits</a>&lt;Allocator&gt;:: is_always_equal::value</code> is true for all <code class="computeroutput">Allocator</code> in the set of <code class="computeroutput">OuterAlloc</code> and <code class="computeroutput">InnerAllocs...</code>, false otherwise. </p>
</li>
</ol></div>
</div>
<div class="refsect2">
<a name="idm45555397286432"></a><h3>
<a name="boost.container.scoped_allocator_adaptorconstruct-copy-destruct"></a><code class="computeroutput">scoped_allocator_adaptor</code> 
        public
       construct/copy/destruct</h3>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<pre class="literallayout"><a name="idm46583871148112-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: value-initializes the OuterAlloc base class and the inner allocator object. </p>
</li>
<li class="listitem">
<pre class="literallayout"><a name="idm46583871146496-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> other<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: initializes each allocator within the adaptor with the corresponding allocator from other. </p>
</li>
<li class="listitem">
<pre class="literallayout"><a name="idm46583871144000-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;&amp;</span> other<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: move constructs each allocator within the adaptor with the corresponding allocator from other. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
  <a name="idm46583871141664-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><span class="identifier">OuterA2</span> <span class="special">&amp;&amp;</span> outerAlloc<span class="special">,</span> 
                           <span class="keyword">const</span> <span class="identifier">InnerAllocs</span> <span class="special">&amp;</span><span class="special">...</span> innerAllocs<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Requires</strong></span>: OuterAlloc shall be constructible from OuterA2.</p>
<p><span class="bold"><strong>Effects</strong></span>: initializes the OuterAlloc base class with boost::forward&lt;OuterA2&gt;(outerAlloc) and inner with innerAllocs...(hence recursively initializing each allocator within the adaptor with the corresponding allocator from the argument list). </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
  <a name="idm46583871137072-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a><span class="special">&lt;</span> <span class="identifier">OuterA2</span><span class="special">,</span> <span class="identifier">InnerAllocs</span><span class="special">...</span><span class="special">&gt;</span> <span class="special">&amp;</span> other<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Requires</strong></span>: OuterAlloc shall be constructible from OuterA2.</p>
<p><span class="bold"><strong>Effects</strong></span>: initializes each allocator within the adaptor with the corresponding allocator from other. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> OuterA2<span class="special">&gt;</span> 
  <a name="idm46583871132832-bb"></a><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a><span class="special">&lt;</span> <span class="identifier">OuterA2</span><span class="special">,</span> <span class="identifier">InnerAllocs</span><span class="special">...</span><span class="special">&gt;</span> <span class="special">&amp;&amp;</span> other<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Requires</strong></span>: OuterAlloc shall be constructible from OuterA2.</p>
<p><span class="bold"><strong>Effects</strong></span>: initializes each allocator within the adaptor with the corresponding allocator rvalue from other. </p>
</li>
<li class="listitem"><pre class="literallayout"><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> <a name="idm46583871128752-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> other<span class="special">)</span><span class="special">;</span></pre></li>
<li class="listitem"><pre class="literallayout"><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> <a name="idm46583871126720-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;&amp;</span> other<span class="special">)</span><span class="special">;</span></pre></li>
<li class="listitem"><pre class="literallayout"><a name="idm46583871146784-bb"></a><span class="special">~</span><span class="identifier">scoped_allocator_adaptor</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre></li>
</ol></div>
</div>
<div class="refsect2">
<a name="idm45555397207024"></a><h3>
<a name="idm46583871197808-bb"></a><code class="computeroutput">scoped_allocator_adaptor</code> public member functions</h3>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<pre class="literallayout"><span class="keyword">void</span> <a name="idm46583871197248-bb"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> r<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: swaps *this with r. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">outer_allocator_type</span> <span class="special">&amp;</span> <a name="idm46583871194432-bb"></a><span class="identifier">outer_allocator</span><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: <code class="computeroutput">static_cast&lt;OuterAlloc&amp;&gt;(*this)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">const</span> <span class="identifier">outer_allocator_type</span> <span class="special">&amp;</span> <a name="idm46583871191872-bb"></a><span class="identifier">outer_allocator</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: <code class="computeroutput">static_cast&lt;const OuterAlloc&amp;&gt;(*this)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">inner_allocator_type</span> <span class="special">&amp;</span> <a name="idm46583871189296-bb"></a><span class="identifier">inner_allocator</span><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: *this if <code class="computeroutput">sizeof...(InnerAllocs)</code> is zero; otherwise, inner. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">inner_allocator_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <a name="idm46583871186736-bb"></a><span class="identifier">inner_allocator</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: *this if <code class="computeroutput">sizeof...(InnerAllocs)</code> is zero; otherwise, inner. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">size_type</span> <a name="idm46583871184160-bb"></a><span class="identifier">max_size</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: <code class="computeroutput">allocator_traits&lt;OuterAlloc&gt;:: max_size(outer_allocator())</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">void</span> <a name="idm46583871181568-bb"></a><span class="identifier">destroy</span><span class="special">(</span><span class="identifier">T</span> <span class="special">*</span> p<span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: calls <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(*this):: destroy(OUTERMOST(*this), p)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">pointer</span> <a name="idm46583871177440-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: <code class="computeroutput">allocator_traits&lt;OuterAlloc&gt;::allocate(outer_allocator(), n)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">pointer</span> <a name="idm46583871174432-bb"></a><span class="identifier">allocate</span><span class="special">(</span><span class="identifier">size_type</span> n<span class="special">,</span> <span class="identifier">const_void_pointer</span> hint<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: <code class="computeroutput">allocator_traits&lt;OuterAlloc&gt;::allocate(outer_allocator(), n, hint)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">void</span> <a name="idm46583871170736-bb"></a><span class="identifier">deallocate</span><span class="special">(</span><span class="identifier">pointer</span> p<span class="special">,</span> <span class="identifier">size_type</span> n<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: <code class="computeroutput">allocator_traits&lt;OuterAlloc&gt;::deallocate(outer_allocator(), p, n)</code>. </p>
</li>
<li class="listitem">
<pre class="literallayout"><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <a name="idm46583871167040-bb"></a><span class="identifier">select_on_container_copy_construction</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Returns</strong></span>: A new <code class="computeroutput"><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a></code> object where each allocator Allocator in the adaptor is initialized from the result of calling <code class="computeroutput">allocator_traits&lt;Allocator&gt;::select_on_container_copy_construction()</code> on the corresponding allocator in *this. </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> Args<span class="special">&gt;</span> <span class="keyword">void</span> <a name="idm46583871163408-bb"></a><span class="identifier">construct</span><span class="special">(</span><span class="identifier">T</span> <span class="special">*</span> p<span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: 1) If <code class="computeroutput">uses_allocator&lt;T, inner_allocator_type&gt;::value</code> is false calls <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, std::forward&lt;Args&gt;(args)...)</code>.</p>
<p>2) Otherwise, if <code class="computeroutput">uses_allocator&lt;T, inner_allocator_type&gt;::value</code> is true and <code class="computeroutput">is_constructible&lt;T, allocator_arg_t, inner_allocator_type, Args...&gt;:: value</code> is true, calls <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, allocator_arg, inner_allocator(), std::forward&lt;Args&gt;(args)...)</code>.</p>
<p>[<span class="bold"><strong>Note</strong></span>: In compilers without advanced decltype SFINAE support, <code class="computeroutput">is_constructible</code> can't be implemented so that condition will be replaced by constructible_with_allocator_prefix&lt;T&gt;::value. -end note]</p>
<p>3) Otherwise, if uses_allocator&lt;T, inner_allocator_type&gt;::value is true and <code class="computeroutput">is_constructible&lt;T, Args..., inner_allocator_type&gt;:: value</code> is true, calls <code class="computeroutput">OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, std::forward&lt;Args&gt;(args)..., inner_allocator())</code>.</p>
<p>[<span class="bold"><strong>Note</strong></span>: In compilers without advanced decltype SFINAE support, <code class="computeroutput">is_constructible</code> can't be implemented so that condition will be replaced by <code class="computeroutput">constructible_with_allocator_suffix&lt;T&gt;:: value</code>. -end note]</p>
<p>4) Otherwise, the program is ill-formed.</p>
<p>[<span class="bold"><strong>Note</strong></span>: An error will result if <code class="computeroutput"><code class="computeroutput"><a class="link" href="uses_allocator.html" title="Struct template uses_allocator">uses_allocator</a></code></code> evaluates to true but the specific constructor does not take an allocator. This definition prevents a silent failure to pass an inner allocator to a contained element. -end note] </p>
</li>
</ol></div>
</div>
<div class="refsect2">
<a name="idm45555397089824"></a><h3>
<a name="idm46583871124848-bb"></a><code class="computeroutput">scoped_allocator_adaptor</code> friend functions</h3>
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
<pre class="literallayout"><span class="keyword">friend</span> <span class="keyword">void</span> <a name="idm46583871124288-bb"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> l<span class="special">,</span> <a class="link" href="scoped_allocator_adaptor.html" title="Class template scoped_allocator_adaptor">scoped_allocator_adaptor</a> <span class="special">&amp;</span> r<span class="special">)</span><span class="special">;</span></pre>
<p><span class="bold"><strong>Effects</strong></span>: swaps *this with r. </p>
</li></ol></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 &#169; 2009-2015 Ion Gaztanaga<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="pmr/unsynchr_idm46583871327984.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_container_header_reference.html#header.boost.container.scoped_allocator_hpp"><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="scoped_allocator_adaptor/rebind.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>