https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86943
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- I might be wrong about the C++14 rules ... maybe the {} initializer should directly initialize the parameter, without any move. I don't know if we need to fix the incorrect argument to the move constructor as well as prevent that move, so the incorrect move doesn't remain latent.