1 // Test that we don't have to deal with type punning 2 // DR 1188 says this is ill-formed 3 // { dg-do compile { target c++11 } } 4 5 union U 6 { 7 float f; 8 unsigned char ca[sizeof(float)]; 9 }; 10 11 constexpr U u = { 1.0 }; 12 constexpr float f = u.f; 13 constexpr unsigned char c = u.ca[0]; // { dg-error "U::ca" } 14 15 constexpr double d = 1.0; 16 constexpr unsigned char c2 = (unsigned char&)d; // { dg-error "char. glvalue" } 17