É `new (this) MyClass ();` comportamento indefinido após chamar diretamente o destruidor?

Emesta questão minha, @DeadMG diz que reinicializando uma classe através dothis ponteiro é um comportamento indefinido. Existe alguma menção a isso no padrão em algum lugar?

Exemplo

#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();
}

Exemplo de saída em Ideone (Eu sei que o UB também pode ser "um comportamento aparentemente correto"
Observe que eu não chamei o destruidor fora da classe, para não acessar um objeto cuja vida útil terminou. Observe também que o @DeadMG diz que chamar diretamente o destruidor é bom desde que seja chamado uma vez para cada construto

questionAnswers(2)

yourAnswerToTheQuestion