https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85813
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- As you pointed out in PR 85812 the constructor of the exception can throw. That can happen even if the current translation unit is not built with exceptions, if the constructor is defined in a different translation unit. Since make_exception_ptr is noexcept, we simply avoid the possibility of termination by returning an empty exception_ptr.