https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63645
--- Comment #22 from M Welinder <terra at gnome dot org> --- >Given > > GnmExprBinary res; > GnmExpr const *expr = (GnmExpr *)&res; > >the C standard does not define where the result of the conversion points; How do you read C99's Section 6.5 #7, then? Doesn't that tell me I can access my GnmExprBinary via an lvalue that has a union type that includes a GnmExprBinary member. GnmExpr is such a union type. Specifically, I read the section as allowing use of the lvalue *expr to access (*expr).binary