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<