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