fix anonymous unions to work in C++ mode