std::pmr::polymorphic_allocator<T>::allocate_object
template< class U > [[nodiscard]] U* allocate_object( std::size_t n = 1 ); | (с C++20) |
Выделяет память для объектов типа 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) | выделение сырой выровненной памяти из базового ресурса (публичный член-функция) |
|
(C++20) | выделение и построение объекта (публичный член-функция) |
| выделение памяти (публичный член-функция) |
|
|
[статический] | выделение неинициализированного хранилища с использованием выделенного ресурса (публичная статическая функция-член std::allocator_traits<Alloc>) |
| выделение памяти (публичная функция-член std::pmr::memory_resource) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/polymorphic_allocator/allocate_object