1// { dg-do run } 2// Test for proper handling of temporaries in ?: exprs. 3 4extern "C" int printf (const char *, ...); 5int c = 0, d = 0; 6 7class A { 8public: 9 A() { ++c; } 10 A(const A&) { ++c; } 11 ~A() { ++d; } 12}; 13 14A f (const A& a) 15{ 16 return (c ? A() : A()); 17} 18 19int main() 20{ 21 { 22 f (c ? A() : A()); 23 } 24 printf ("%d %d\n", c, d); 25 return c != d || c != 2; 26} 27