std::pmr::polymorphic_allocator<T>::new_object
template< class U, class... CtorArgs > U* new_object( CtorArgs&&... ctor_args ); | (начиная с C++20) |
Выделяет память и конструирует объект типа U.
Пусть alloc является std::pmr::polymorphic_allocator<T>:
U* p = alloc.new_object<U>(std::forward<CtorArgs>(ctor_args)...);
эквивалентно
U* p = alloc.allocate_object<U>();
try
{
alloc.construct(p, std::forward<CtorArgs>(ctor_args)...);
}
catch (...)
{
alloc.deallocate_object(p);
throw;
}
Параметры
| ctor_args | - | аргументы, передаваемые конструктору U |
Возвращаемое значение
Указатель на выделенный объект после его конструирования.
Примечания
Эта функция была введена для использования со специализированным аллокатором std::pmr::polymorphic_allocator<>, но может быть полезна и в любой специализации как сокращённый способ избежать необходимости повторно связывать std::pmr::polymorphic_allocator<T> с std::pmr::polymorphic_allocator<U> и вызывать по отдельности allocate, construct и deallocate.
Поскольку U не выводится, при вызове этой функции его необходимо указать в качестве аргумента шаблона.
Исключения
Могут возникнуть любые исключения, выбрасываемые при вызове allocate_object или конструктором U.
См. также
|
(C++20) | выделяет необработанную выровненную память из базового ресурса (открытая функция-член) |
|
(C++20) | выделяет необработанную память, подходящую для объекта или массива (открытая функция-член) |
| выделяет память (открытая функция-член) |
|
|
[static] | выделяет неинициализированное хранилище с помощью аллокатора (открытая статическая функция-член 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/cpp/memory/polymorphic_allocator/new_object