In order to call a constructor on an already allocated memory, we use placement new:
new(pMemory) Widget;
However, destructors seem to be directly callable:
pWidget->~Widget();
Soctt Meyars More Effective C++ item 8
Is this still valid with current C++ standard? What is the reason for this asymmetry?