Suppose I have a class like so:
#include <new>
struct thing {
thing() = default;
void foo()
{
this->~thing();
new (this) thing();
}
};
Is calling the destructor like this and then reconstructing the object using a placement new defined behavior?