Calling the destructor multiple times on a class object results in undefined behavior according to [class.dtor]/19:

Once a destructor is invoked for an object, the object's lifetime ends; the behavior is undefined if the destructor is invoked for an object whose lifetime has ended ([]).

However, similar thing doesn't apply to pseudo-destructor calls.

P0593R6 makes pseudo-destructor calls end objects' lifetimes. I wonder if adding such a provision would be useful.