https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94992
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Comment on attachment 48477 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48477 testcase > my_future f2; > new (&f2) my_future(std::move(f2)); This is going to be problematic as f2 is being created but you are using the old object which has the same address as the new one.