Это выглядит как undefined поведение
union A {
int const x;
float y;
};
A a = { 0 };
a.y = 1;
В спецификации указано
Создание нового объекта в месте хранения, в котором находится объект const со статической, потоковой или автоматической продолжительностью хранения, или в месте хранения, которое такой объект const, который использовался для его завершения до его окончания жизни, приводит к поведению undefined.
Но никакой компилятор не предупреждает меня, пока он легко диагностирует ошибку. Я неверно истолковал формулировку?