23 General utilities library [utilities]

23.10 Memory [memory]

23.10.8 Allocator traits [allocator.traits]

23.10.8.2 Allocator traits static member functions [allocator.traits.members]

static pointer allocate(Alloc& a, size_type n);

Returns: a.allocate(n).

static pointer allocate(Alloc& a, size_type n, const_void_pointer hint);

Returns: a.allocate(n, hint) если это выражение правильно сформировано; в противном случае a.allocate(n).

static void deallocate(Alloc& a, pointer p, size_type n);

Effects: Звонки a.deallocate(p, n).

Throws: Ничего такого.

template <class T, class... Args> static void construct(Alloc& a, T* p, Args&&... args);

Effects: Звонит, a.construct(p, std​::​forward<Args>(args)...) если этот звонок правильно сформирован; в противном случае вызывает ​::​new (static_­cast<void*>(p)) T(std​::​forward<Args>(args)...).

template <class T> static void destroy(Alloc& a, T* p);

Effects: Звонит, a.destroy(p) если этот звонок правильно сформирован; в противном случае вызывает p->~T().

static size_type max_size(const Alloc& a) noexcept;

Returns: a.max_­size() если это выражение правильно сформировано; в противном случае 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() если это выражение правильно сформировано; в противном случае rhs.