std::uninitialized_construct_using_allocator
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <memory>
  | 
||
|   template< class T, class Alloc, class... Args > T* uninitialized_construct_using_allocator( T* p, const Alloc& alloc, Args&&... args )  | 
(since C++20) | |
Creates an object of the given type T by means of uses-allocator construction at the uninitialized memory location indicated by p
Equivalent to
return ::new(static_cast<void*>(p)) T( std::make_obj_using_allocator<T>(alloc, std::forward<Args>(args)...) );
Parameters
| p | - | the memory location where the object will be placed. | 
| alloc | - | the allocator to use. | 
| args | - | the arguments to pass to T's constructor | 
Return value
Pointer to the newly-created object of type T
Exceptions
May throw any exception thrown by the constructor of T, typically including std::bad_alloc
Example
| This section is incomplete Reason: no example  | 
See also
|    (C++11)  | 
   checks if the specified type supports uses-allocator construction   (class template)  | 
|    (C++20)  | 
   creates an object of the given type by means of uses-allocator construction   (function template)  |