Remarks: This function does not attempt to allocate storage
by calling ::operatornew() ([new.delete]).
When a non-null pointer is returned,
this function implicitly creates objects ([intro.object])
in the returned region of storage and
returns a pointer to a suitable created object.
The objects are created before the storage is copied.