https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120498
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- And "expected primary-expression before '.' token" because that syntax for initializing a member of a subobject isn't valid at all in C++. So you're not initializing 'sa.u' and that's why you get an error.