Based on the discussion, there is no clear answer to whether skipping allocator destroy for trivially destructible types is allowed by the standard. However people tend to prefer the implementation of calling it regardless and let the compiler take care of potential optimization. I will mark this question as closed.