https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87150
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Right. CWG 1579 says we should move here: struct A { }; struct B { B(A&&) { } }; B f() { A a; return a; } That's a different case though.