std::pmr::polymorphic_allocator<T>::allocate_object
template< class U > [[nodiscard]] U* allocate_object( std::size_t n = 1 ); |
(начиная с C++20) | |
Выделяет хранилище для n объектов типа U
, используя базовый ресурс памяти.
Если std::numeric_limits<std::size_t>::max() / sizeof(U) < n, генерируется std::bad_array_new_length, иначе эквивалентно return static_cast<U*>(allocate_bytes(n * sizeof(U), alignof(U)));.
Содержание |
[править] Параметры
n | — | количество объектов, для которых нужно выделить хранилище |
[править] Возвращаемое значение
Указатель на выделенное хранилище.
[править] Примечание
Эта функция была введена для использования с полностью специализированным аллокатором std::pmr::polymorphic_allocator<>, но может быть полезна в любой специализации в качестве сокращения, позволяющего избежать повторной привязки из std::pmr::polymorphic_allocator<T> в std::pmr::polymorphic_allocator<U>.
Поскольку U
не выводится, его необходимо указать в качестве аргумента шаблона при вызове этой функции.
[править] Исключения
Генерирует std::bad_array_new_length, если n > std::numeric_limits<std::size_t>::max() / sizeof(U); также могут быть любые исключения, сгенерированные вызовом resource()->allocate.
[править] Смотрите также
(C++20) |
выделяет сырую выровненную память из базового ресурса (public функция-элемент) |
(C++20) |
выделяет память и создаёт объект (public функция-элемент) |
выделяет память (public функция-элемент) | |
[static] |
выделяет неинициализированное хранилище с помощью аллокатора (public static функция-элемент std::allocator_traits )
|
выделяет память (public функция-элемент std::pmr::memory_resource )
|