Colocação nova e atribuição de classe com membro const

Por que esse comportamento indefinido?

struct s
{
    const int id; // <-- const member

    s(int id):
        id(id)
    {}

    s& operator =(const s& m) {
        return *new(this) s(m); // <-- undefined behavior?
    }
};

(Citação do padrão seria bom).

Esta questão surgiu deesta resposta.

questionAnswers(1)

yourAnswerToTheQuestion