https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67773
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Oh, are you expecting this: a_thing = demo(demo::second); to have the same behaviour as this: a_thing.~demo(); new(&a_thing) demo(demo::second); ? That's not how C++ works.