std::pmr::polymorphic_allocator<T>::new_object
template< class U, class... CtorArgs > [[nodiscard]] 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) | выделяет сырую память, подходящую для объекта или массива (публичный член-функция) |
| выделение памяти (публичный член-функция) |
|
|
[статический] | выделяет неинициализированное хранилище с использованием аллокатора (публичная статическая функция-член 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/new_object