Difference between revisions of "cpp/memory/scoped allocator adaptor"
m (mention the impl detail about inner) |
m (Text replace - "{{source cpp" to "{{source") |
||
Line 36: | Line 36: | ||
<div style{{=}}"padding-left:3em; max-width: 50em; overflow: hidden;"> | <div style{{=}}"padding-left:3em; max-width: 50em; overflow: hidden;"> | ||
− | {{source | + | {{source|template< class T > |
struct rebind { | struct rebind { | ||
typedef scoped_allocator_adaptor< | typedef scoped_allocator_adaptor< |
Revision as of 15:21, 19 April 2012
Template:cpp/memory/scoped allocator adaptor/sidebar Template:ddcl list begin <tr class="t-dsc-header">
<td><scoped_allocator>
<td></td> <td></td> </tr> <tr class="t-dcl ">
<td >class scoped_allocator_adaptor : public OuterAlloc;
<td class="t-dcl-nopad"> </td> <td > (since C++11) </td> </tr> Template:ddcl list end
The std::scoped_allocator_adaptor
class template is an allocator which can be used with multilevel containers (vector of sets of lists of tuples of maps, etc). It is instantiated with one outer allocator type OuterAlloc
and zero or more inner allocator types InnerAlloc...
. A container constructed directly with a scoped_allocator_adaptor
uses OuterAlloc
to allocate its elements, but if an element is itself a container, it uses the first inner allocator. The elements of that container, if they are themselves containers, use the second inner allocator, etc. If there are more levels to the container than there are inner allocators, the last inner allocator is reused for all further nested containers.
For the purpose of scoped_allocator_adaptor
, if the next inner allocator is A
, any class T
for which Template:cpp participates in the recursion as if it was a container. Additionally, Template:cpp is treated as such a container by specific overloads of scoped_allocator_adaptor::construct.
Typical implementation holds an instance of a std::scoped_allocator_adaptor<InnerAllocs...>
as a member object.
Contents |
Member types
Template:tdcl list begin Template:tdcl list hitem Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list item Template:tdcl list end