Class template associated_allocator is an associator ([async.reqmts.associator]) for the ProtoAllocator ([async.reqmts.proto.allocator]) type requirements, with default candidate type allocator<void> and default candidate object allocator<void>().
namespace std { namespace experimental { namespace net { inline namespace v1 { template<class T, class ProtoAllocator = allocator<void>> struct associated_allocator { using type = see below; static type get(const T& t, const ProtoAllocator& a = ProtoAllocator()) noexcept; }; } // inline namespace v1 } // namespace net } // namespace experimental } // namespace std
Specializations of associated_allocator shall satisfy the requirements in Table [tab:async.assoc.alloc.requirements]. In this table, X is a specialization of associated_allocator for the template parameters T and ProtoAllocator; t is a (possibly const) value of type T; and a is an object of type ProtoAllocator.
Expression | Return type | Note |
typename X::type | A type meeting the proto-allocator ([async.reqmts.proto.allocator]) requirements. | |
X::get(t) | X::type | Shall not exit via an exception. Equivalent to X::get(t, ProtoAllocator()). |
X::get(t, a) | X::type | Shall not exit via an exception. |
using type = see below;
Type: T::allocator_type if the qualified-id T::allocator_type is valid and denotes a type (C++ 2014 [temp.deduct]). Otherwise ProtoAllocator.
type get(const T& t, const ProtoAllocator& a = ProtoAllocator()) noexcept;
Returns: t.get_allocator() if the qualified-id T::allocator_type is valid and denotes a type (C++ 2014 [temp.deduct]). Otherwise a.