Namespaces
Variants

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

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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 .

Смотрите также

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