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) |
выделяет сырую выровненную память из базового ресурса (public функция-элемент) |
(C++20) |
выделяет сырую память, подходящую для объекта или массива (public функция-элемент) |
выделяет память (public функция-элемент) | |
[static] |
выделяет неинициализированное хранилище с помощью аллокатора (public static функция-элемент std::allocator_traits )
|
выделяет память (public функция-элемент std::pmr::memory_resource )
|