1 // PR c++/56728 2 // { dg-require-effective-target c++11 } 3 4 class B { 5 public: 6 static B instance; 7 class Inner 8 { 9 public: 10 class Wuzi 11 { 12 unsigned int m; 13 } m_Class[3]; 14 unsigned m_Int[4]; 15 }; 16 getInner()17 constexpr static Inner & getInner() 18 /* I am surprised this is considered a constexpr */ 19 { 20 return *((Inner *)4); // { dg-error "reinterpret_cast" } 21 } 22 }; 23 24 B B::instance; 25 26 class A 27 { 28 public: A(B & bridge,B::Inner & bridge2,unsigned char index)29 constexpr A(B &bridge, B::Inner &bridge2, unsigned char index) 30 : m_Bridge(bridge), m_Wuz(bridge2.m_Class[index]) 31 {} 32 33 B &m_Bridge; 34 B::Inner::Wuzi &m_Wuz; 35 }; 36 A works{B::instance, B::getInner(), 3}; 37 A crashnkill[1]{{B::instance, B::getInner(), 3}}; 38