g++ doesn't support this code: sorry, unimplemented: non-trivial designated initializers not supported twoIntFields sSwapped = { .m2 = source(), .m1 = 0 }; so we need to build it in clang mode.