| // PR c++/56728 |
| // { dg-require-effective-target c++11 } |
| |
| class B { |
| public: |
| static B instance; |
| class Inner |
| { |
| public: |
| class Wuzi |
| { |
| unsigned int m; |
| } m_Class[3]; |
| unsigned m_Int[4]; |
| }; |
| |
| constexpr static Inner & getInner() |
| /* I am surprised this is considered a constexpr */ |
| { |
| return *((Inner *)4); // { dg-error "reinterpret_cast" } |
| } |
| }; |
| |
| B B::instance; |
| |
| class A |
| { |
| public: |
| constexpr A(B &bridge, B::Inner &bridge2, unsigned char index) |
| : m_Bridge(bridge), m_Wuz(bridge2.m_Class[index]) |
| {} |
| |
| B &m_Bridge; |
| B::Inner::Wuzi &m_Wuz; |
| }; |
| A works{B::instance, B::getInner(), 3}; |
| A crashnkill[1]{{B::instance, B::getInner(), 3}}; |