In C++, the operator new allocates memory for an object and then
creates an object at that location by calling a constructor. Occasionally,
however, it is useful to separate those two operations. [1] If p is
a pointer to memory that has been allocated but not initialized,
then construct(p, value) creates an object of type T1 at the location
pointed to by p. The argument value is passed as an argument to
T1's constructor.