| // PR ipa/59947 | |
| // { dg-do compile { target c++11 } } | |
| // { dg-options "-O0" } | |
| #pragma GCC optimize ("O2") | |
| template <typename T> | |
| inline void | |
| foo (T & a) noexcept { T tmp = static_cast <T &&> (a); }; | |
| struct A | |
| { | |
| A () noexcept : a (1), b (1) {} | |
| virtual void c () noexcept = 0; | |
| void d () noexcept { c (); } | |
| int a; | |
| int b; | |
| }; | |
| struct B | |
| { | |
| ~B () noexcept { e->d (); } | |
| A *e; | |
| }; | |
| template <typename T> | |
| struct C | |
| { | |
| B f; | |
| }; | |
| struct D {}; | |
| template <typename T> | |
| struct E | |
| { | |
| void bar () { foo (g); } | |
| C <D> g; | |
| }; | |
| template class E <char>; |