Skip to main content

std::allocator<T>::construct

Since C++11, Deprecated in C++17, Removed in C++20
template< class U, class... Args >
void construct( U* p, Args&&... args );
Until C++11
void construct( pointer p, const_reference val );

Constructs an object of type T in allocated uninitialized storage pointed to by p, using global placement-new.

  1. Calls ::new((void*)p) T(val).
  2. Calls ::new((void*)p) U(std::forward<Args>(args)...).

Parameters

p - pointer to allocated uninitialized storage
val - the value to use as the copy constructor argument
args... - the constructor arguments to use

Return value

(none)

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DRApplied toBehavior as publishedCorrect behavior
LWG 402C++98if T::operator new exists, the program might be ill-formeduses global replacement-new instead

std::allocator<T>::construct

Since C++11, Deprecated in C++17, Removed in C++20
template< class U, class... Args >
void construct( U* p, Args&&... args );
Until C++11
void construct( pointer p, const_reference val );

Constructs an object of type T in allocated uninitialized storage pointed to by p, using global placement-new.

  1. Calls ::new((void*)p) T(val).
  2. Calls ::new((void*)p) U(std::forward<Args>(args)...).

Parameters

p - pointer to allocated uninitialized storage
val - the value to use as the copy constructor argument
args... - the constructor arguments to use

Return value

(none)

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DRApplied toBehavior as publishedCorrect behavior
LWG 402C++98if T::operator new exists, the program might be ill-formeduses global replacement-new instead