这似乎是未定义的行为
union A { int const x; float y; }; A a = { 0 }; a.y = 1;
规范说
在存储位置创建一个具有静态,线程或自动存储持续时间的const对象占用的新对象,或者在此生命周期结束之前这样的const对象占用的存储位置处导致未定义的行为.
但是没有编译器警告我,因为它很容易诊断错误.我是否误解了措辞?
c++ const undefined-behavior unions
c++ ×1
const ×1
undefined-behavior ×1
unions ×1