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

From cppreference.com
 
 
Dynamic memory management
Uninitialized storage
(C++17)
Garbage collection support
Miscellaneous
(C++20)
(C++11)
(C++11)
C Library
Low level memory management
 
 
template< class U, class CtorArgs... >
U* new_object( CtorArgs&&... ctor_args );
(since C++20)

Allocates and constructs an object of type U.

Equivalent to

U* p = allocate_object<U>();
try {
  construct(p, std::forward<CtorArgs>(ctor_args)...);
} catch (...) {
  deallocate_object(p);
  throw;
}
return p;

Parameters

ctor_args - the arguments to forward to the the constructor of U

Return value

A pointer to the allocated and constructed object.

Notes

This function was introduced for use with the fully-specialized allocator std::polymorphic_allocator<>, but it may be useful in any specialization as a shortcut to avoid having to rebind from std::polymorphic_allocator<T> to std::polymorphic_allocator<U>, and having to call allocate, construct, and deallocate individually.

Since U is not deduced, it must be provided as a template argument when calling this function.

Exceptions

May throw any exceptions thrown by the call to allocate_object or the constructor of U.

See also

Allocate raw aligned memory from the underlying resource
(public member function)
Allocates raw memory suitable for an object or an array
(public member function)
Allocate memory
(public member function)
[static]
allocates uninitialized storage using the allocator
(public static member function of std::allocator_traits<Alloc>)
allocates memory
(public member function of std::pmr::memory_resource)