std::pmr::polymorphic_allocator<T>::new_object (3) - Linux Manuals

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


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


template< class U, class CtorArgs... > (since C++20)
U* new_object( CtorArgs&&... ctor_args );

Allocates and constructs an object of type U.
Equivalent to

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


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

Return value

A pointer to the allocated and constructed object.


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.


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

See also

allocate_bytes Allocate raw aligned memory from the underlying resource
                (public member function)

allocate_object Allocates raw memory suitable for an object or an array
                (public member function)
                Allocate memory
allocate (public member function)

allocate allocates uninitialized storage using the allocator
                (public static member function of std::allocator_traits<Alloc>)
                allocates memory
allocate (public member function of std::pmr::memory_resource)