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

From cppreference.com
 
 
Dynamic memory management
Smart pointers
(C++11)
(C++11)
(C++11)
(until C++17)
(C++11)
(C++23)
Allocators
Memory resources
Uninitialized storage
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Garbage collection support
(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)
Miscellaneous
(C++20)
(C++11)
(C++11)
 
 
template< class U, class... CtorArgs >
[[nodiscard]] U* new_object( CtorArgs&&... ctor_args );
(since C++20)

Allocates and constructs an object of type U.

Given alloc is a std::pmr::polymorphic_allocator<T>:

U* p = alloc.new_object<U>(std::forward<CtorArgs>(ctor_args)...);

is equivalent to

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

Parameters

ctor_args - the arguments to forward to 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::pmr::polymorphic_allocator<>, but it may be useful in any specialization as a shortcut to avoid having to rebind from std::pmr::polymorphic_allocator<T> to std::pmr::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)