23 General utilities library [utilities]
static pointer allocate(Alloc& a, size_type n);
static pointer allocate(Alloc& a, size_type n, const_void_pointer hint);
Returns: a.allocate(n, hint) if that expression is well-formed; otherwise,
a.allocate(n). static void deallocate(Alloc& a, pointer p, size_type n);
Effects: Calls
a.deallocate(p, n). template <class T, class... Args>
static void construct(Alloc& a, T* p, Args&&... args);
Effects: Calls
a.construct(p, std::forward<Args>(args)...)
if that call is well-formed;
otherwise, invokes
::new (static_cast<void*>(p)) T(std::forward<Args>(args)...). template <class T>
static void destroy(Alloc& a, T* p);
Effects: Calls
a.destroy(p) if that call is well-formed; otherwise, invokes
p->~T(). static size_type max_size(const Alloc& a) noexcept;
Returns: a.max_size() if that expression is well-formed; otherwise,
numeric_limits<size_type>::max()/sizeof(value_type). static Alloc select_on_container_copy_construction(const Alloc& rhs);
Returns: rhs.select_on_container_copy_construction() if that expression is
well-formed; otherwise,
rhs.