# std::allocator_traits<Alloc>::construct

From cppreference.com
< cpp‎ | memory‎ | allocator traits

Defined in header `<memory>` |  |
template< class T, class... Args > static void construct( Alloc& a, T* p, Args&&... args ); |  | (since C++11)

If possible, constructs an object of type `T` in allocated uninitialized storage pointed to by `p`, by calling

a.construct(p, std::forward<Args>(args)...)

If the above is not possible (e.g. `a` does not have the member function `construct()`,), then calls placement-new as

::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)

### Parameters

a | - | allocator to use for construction
args... | - | the constructor arguments to pass to `a.construct()` or to placement-new

### Return value

(none)

### Notes

This function is used by the standard library containers when inserting, copying, or moving elements.

Because this function provides the automatic fall back to placement new, the member function `construct()` is an optional Allocator requirement since C++11.

### See also

operator new operator new[] | allocation functions (function)
construct (deprecated in C++17)(removed in C++20) | constructs an object in allocated storage (public member function of `std::allocator<T>`)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/allocator_traits/construct&oldid=103310"