home | help
std::pmr::p...::new_object(3)  C++ Standard Libary std::pmr::p...::new_object(3)

NAME
     std::pmr::polymorphic_allocator::new_object - std::pmr::polymorphic_alloca-
     tor::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 alloca-
     tor
	std::pmr::polymorphic_allocator<>, but it may be useful in any	special-
     ization as a
	shortcut  to  avoid  having to rebind from std::pmr::polymorphic_alloca-
     tor<T> to
	std::pmr::polymorphic_allocator<U>, and having to  call  allocate,  con-
     struct, 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::alloca-
     tor_traits<Alloc>)

	allocate	allocates memory
			(public member function of std::pmr::memory_resource)

http://cppreference.com 	   2024.06.10	   std::pmr::p...::new_object(3)

home | help