Пространства имён
Варианты
Действия

std::pmr::polymorphic_allocator<T>::new_object

Материал из cppreference.com
 
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
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.

[править] Смотрите также

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