https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83981
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- Also, if boost::optional had a noexcept move constructor it would work fine. This is a boost bug. The part of the patch addressing PR 83982 seems right.