table of contents
std::pmr::polymorphic_allocator::new_object(3) | C++ Standard Libary | std::pmr::polymorphic_allocator::new_object(3) |
NAME¶
std::pmr::polymorphic_allocator::new_object - std::pmr::polymorphic_allocator::new_object
Synopsis¶
template< class U, class... CtorArgs > (since C++20)
[[nodiscard]] U* new_object( CtorArgs&&... ctor_args );
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_bytes allocate raw aligned memory from the underlying
resource
(C++20) (public member function)
allocate_object allocates raw memory suitable for an object or an array
(C++20) (public member function)
allocate allocate memory
(public member function)
allocate allocates uninitialized storage using the allocator
[static] (public static member function of
std::allocator_traits<Alloc>)
allocate allocates memory
(public member function of std::pmr::memory_resource)
2024.06.10 | http://cppreference.com |