Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/memory/scoped allocator adaptor"

From cppreference.com
< cpp‎ | memory
(Non-member functions: fmt, link)
(Member types: fmt)
Line 15: Line 15:
 
===Member types===
 
===Member types===
 
{{tdcl list begin}}
 
{{tdcl list begin}}
{{tdcl list hitem | type | definition }}
+
{{tdcl list hitem | Type | Definition }}
{{tdcl list item | outer_allocator_type | {{cpp|OuterAlloc}} }}
+
{{tdcl list item | {{tt|outer_allocator_type}} | {{cpp|OuterAlloc}} }}
{{tdcl list item | inner_allocator_type | {{cpp|scoped_allocator_adaptor<InnerAllocs...>}} or, if {{cpp|1=sizeof...(InnerAllocs) == 0}}, {{cpp|scoped_allocator_adaptor<OuterAlloc>}}}}
+
{{tdcl list item | {{tt|inner_allocator_type}} | {{cpp|scoped_allocator_adaptor<InnerAllocs...>}} or, if {{cpp|1=sizeof...(InnerAllocs) == 0}}, {{cpp|scoped_allocator_adaptor<OuterAlloc>}}}}
{{tdcl list item | value_type | {{cpp|std::allocator_traits<OuterAlloc>::value_type}} }}
+
{{tdcl list item | {{tt|value_type}} | {{cpp|std::allocator_traits<OuterAlloc>::value_type}} }}
{{tdcl list item | size_type | {{cpp|std::allocator_traits<OuterAlloc>::size_type}} }}
+
{{tdcl list item | {{tt|size_type}} | {{cpp|std::allocator_traits<OuterAlloc>::size_type}} }}
{{tdcl list item | difference_type | {{cpp|std::allocator_traits<OuterAlloc>::difference_type}} }}
+
{{tdcl list item | {{tt|difference_type}} | {{cpp|std::allocator_traits<OuterAlloc>::difference_type}} }}
{{tdcl list item | pointer | {{cpp|std::allocator_traits<OuterAlloc>::pointer}} }}
+
{{tdcl list item | {{tt|pointer}} | {{cpp|std::allocator_traits<OuterAlloc>::pointer}} }}
{{tdcl list item | const_pointer | {{cpp|std::allocator_traits<OuterAlloc>::const_pointer}} }}
+
{{tdcl list item | {{tt|const_pointer}} | {{cpp|std::allocator_traits<OuterAlloc>::const_pointer}} }}
{{tdcl list item | void_pointer | {{cpp|std::allocator_traits<OuterAlloc>::void_pointer}} }}
+
{{tdcl list item | {{tt|void_pointer}} | {{cpp|std::allocator_traits<OuterAlloc>::void_pointer}} }}
{{tdcl list item | const_void_pointer | {{cpp|std::allocator_traits<OuterAlloc>::const_void_pointer}} }}
+
{{tdcl list item | {{tt|const_void_pointer}} | {{cpp|std::allocator_traits<OuterAlloc>::const_void_pointer}} }}
{{tdcl list item | propagate_on_container_copy_assignment | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_copy_assignment::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
+
{{tdcl list item | {{tt|propagate_on_container_copy_assignment}} | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_copy_assignment::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
{{tdcl list item | propagate_on_container_move_assignment | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_move_assignment::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
+
{{tdcl list item | {{tt|propagate_on_container_move_assignment}} | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_move_assignment::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
{{tdcl list item | propagate_on_container_swap | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_swap::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
+
{{tdcl list item | {{tt|propagate_on_container_swap}} | {{cpp|std::true_type}} if {{cpp|std::allocator_traits<A>::propagate_on_container_swap::value}} is {{cpp|true}} for at least one allocator {{tt|A}} among {{tt|OuterAlloc}} and {{tt|InnerAlloc...}} }}
{{tdcl list item | rebind | {{cpp|template< class T >
+
{{tdcl list item | {{tt|rebind}} | {{cpp|template< class T >
 
struct rebind {
 
struct rebind {
 
     typedef scoped_allocator_adaptor<
 
     typedef scoped_allocator_adaptor<

Revision as of 08:53, 8 December 2011

Template:cpp/memory/scoped allocator adaptor/sidebar Template:ddcl list begin <tr class="t-dsc-header">

<td>
Defined in header <scoped_allocator>
</td>

<td></td> <td></td> </tr> <tr class="t-dcl ">

<td >
template< class OuterAlloc, class... InnerAlloc >
class scoped_allocator_adaptor : public OuterAlloc;
</td>

<td class="t-dcl-nopad"> </td> <td > Template:mark c++11 feature </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 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.

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

Member functions

creates a new scoped_allocator_adaptor instance
(public member function)
destructs a scoped_allocator_adaptor instance
(public member function)
obtains an inner_allocator reference
(public member function)
obtains an outer_allocator reference
(public member function)
allocates uninitialized storage using the outer allocator
(public member function)
allocates storage using the outer allocator
(public member function)
returns the largest allocation size supported by the outer allocator
(public member function)
constructs an object in allocated storage, passing the inner allocator to its constructor if appropriate
(public member function)
desrtucts an object in allocated storage
(public member function)
copies the state of scoped_allocator_adaptor and all its allocators
(public member function)

Non-member functions

compares two scoped_allocator_adaptor instances
(public member function)

See also

Template:cpp/memory/dcl list allocator traitsTemplate:cpp/memory/dcl list uses allocatorTemplate:cpp/memory/dcl list allocator