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