Spec-Zone.ru › C++

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.

См. также

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API