struct X {};
union foo
{
char* charPtr;
X* xPtr;
}
foo bar;
bar.charPtr = <whatever>;
X* x = bar.xPtr;
Czy ten kod to UB (mówimy o C++)? Jeśli tak to czy wynika to z odczytu ze zmiennej innej niż ta do której zapisano czy też czegoś innego.
Disclaimer: to nie jest mój kod i na pewno bym nie używał union
do tego. Szukam raczej jednoznacznego powodu by odrzucić ten kod przy code review.