...
When manually managing the lifetime of an object, the constructor must be called to initiate the lifetime of the object. Similarly, the destructor must be called to terminate the lifetime of the object. Use of an object outside of its lifetime may result in is undefined behavior. An object can be constructed either by calling the constructor explicitly using the placement new operator or by calling the construct()
function of an allocator object. An object can be destroyed either by calling the destructor explicitly or by calling the destroy()
function of an allocator object.
...