Spec-Zone.ru › C++

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

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.

См. также

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

Spec-Zone.ru

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