blob: da53278645c55d7044110a1e31d9ec22a77e7e71 [file] [log] [blame]
// PR c++/101165 - P2266R1 - Simpler implicit move
// { dg-do compile { target c++14 } }
// A variant of cxx23/elision1.C:eight, just with ().
struct Widget {
Widget(Widget&&);
};
Widget val();
decltype(auto)
foo ()
{
decltype(auto) x = val(); // OK, x is Widget
// We deduce the return type to int&&, therefore we're doing something
// we ought not to be doing -- returning a reference to a local variable!
// In C++20, we deduce to int&, but that has the same problem!
return (x); // { dg-warning "reference to local variable" }
}