// PR c++/88103 // { dg-do compile { target c++11 } } struct A { A (int); A&& foo () &&; int i; }; void free (A&&); void test_xvalue (A a){ A&& ref = true ? static_cast (a) : static_cast (a); free (true ? static_cast (a) : static_cast (a)); (true ? static_cast (a) : static_cast (a)).foo (); int&& k = (true ? static_cast (a) : static_cast (a)).i; } void test_prvalue (A a){ A&& ref = true ? static_cast (a) : 1; free (true ? static_cast (a) : 1); (true ? static_cast (a) : 1).foo (); int&& k = (true ? static_cast (a) : 1).i; }