Рассмотрим простое объединение с измененным «активным членом»:
union U {
int i;
char *p;
};
U u = { 1 };
u.p = 0;
Есть ли какая-либо ревизия стандарта C ++, которая может правильно определить, что здесь происходит?
В частности, что такое u.p
семантически? Это lvalue во время компиляции, , но к чему относится его оценка во время выполнения?
Может ли объект-указатель существовать в u
до того, как он будет назначен?
Могут ли объекты существовать до того, как их время жизни даже начнется?
Могут ли два скалярных объекта (различных типов) сосуществовать одновременно по одному и тому же адресу