Is `new (this) MyClass ();` comportamiento indefinido después de llamar directamente al destructor?

Inesta pregunta mía, @DeadMG dice que reinicializar una clase a través dethis puntero es comportamiento indefinido. ¿Hay alguna mención de ello en el estándar en alguna parte?

Ejemplo

#include <iostream>

class X{
  int _i;
public:  
  X() : _i(0) { std::cout << "X()\n"; }
  X(int i) : _i(i) { std::cout << "X(int)\n"; }

  ~X(){ std::cout << "~X()\n"; }

  void foo(){
    this->~X();
    new (this) X(5);
  }

  void print_i(){
    std::cout << _i << "\n";
  }
};

int main(){
  X x;
  x.foo();
  // mock random stack noise
  int noise[20];
  x.print_i();
}

Ejemplo de salida en Ideone (Sé que UB también puede ser "comportamiento aparentemente correcto").
Tenga en cuenta que no llamé al destructor fuera de la clase, para no acceder a un objeto cuya vida útil ha finalizado. También tenga en cuenta que @DeadMG dice que llamar directamente al destructor está bien siempre y cuando se llame una vez para cada constructor.

Respuestas a la pregunta(2)

Su respuesta a la pregunta