https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91827
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- You can't move a const optional object. Your assertions are equivalent to is_nothrow_copy_constructible and that is not required to have a non-throwing noexceptt-specific. The C++17 standard requires std::optional<int> to have a trivial (and therefore noexcept) copy constructor, but the Fundamentals TS does not require that for std::experimental::optional<int>. So not a bug.