// Test that we don't have to deal with type punning // DR 1188 says this is ill-formed // { dg-do compile { target c++11 } } union U { float f; unsigned char ca[sizeof(float)]; }; constexpr U u = { 1.0 }; constexpr float f = u.f; constexpr unsigned char c = u.ca[0]; // { dg-error "U::ca" } constexpr double d = 1.0; constexpr unsigned char c2 = (unsigned char&)d; // { dg-error "char. glvalue" }