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