| // DR 1697 | |
| // { dg-do run { target c++11 } } | |
| #define assert(X) do { if (!(X)) __builtin_abort(); } while(0) | |
| int i; | |
| struct S { | |
| ~S() { assert (i++ == 2); } | |
| }; | |
| struct X { | |
| X() { assert (i++ == 0); } | |
| X(const X&); | |
| }; | |
| struct T { | |
| S &&s; | |
| X x; | |
| }; | |
| void f() { assert (i++ == 1); } | |
| int main() { | |
| { | |
| T t = T{ {}, {} }; | |
| f(); | |
| } | |
| assert (i == 3); | |
| } |