Является ли этот код корректным?
int main()
{
union
{
int i;
float f;
} u;
u.f = 5.0;
u.i = u.f; // ?????
}
Он обращается к двум различным членам профсоюза в одном выражении, поэтому я задаюсь вопросом, не попадает ли это в положения [class.union]/1 об активном члене профсоюза.
Стандарт С++, похоже, указывает, какие операции изменяют активный элемент для встроенных типов, и что происходит, если неактивный элемент читается или записывается.