// { dg-do run } // Testcase for the lifetime of a temporary object which is used to // initialize a reference. int destroyed = 0; struct A { A() { } A(int) { } ~A() { destroyed++; } }; A a; A foo () { return a; } int main() { const A& ar = foo(); const A& ar2 = A(); const A& ar3 = (A)1; return destroyed; }