Это было бы хорошо, если бы это не конфликтовало с разматыванием стека.
Вы уничтожаете объект, а затем восстанавливаете его с помощью указателя.Это то, что вы сделали бы, если бы вам нужно было создать и уничтожить массив объектов, у которых нет конструктора по умолчанию.
Проблема в том, что это небезопасно для исключений.Что если вызов конструктора вызывает исключение и стек разматывается, а деструктор вызывается во второй раз?
{
X x;
x.foo(); // here ~X succeeds, then construction fails
} //then the destructor is invoked for the second time.
Этот аспект определенно будет неопределенным поведением.