void set_error()

in include/unifex/upon_error.hpp [54:85]


  void set_error(Error&& error) && noexcept{
    using result_t = std::invoke_result_t<Func, Error>;
    if constexpr (std::is_void_v<result_t>) {
      if constexpr (noexcept(std::invoke((Func &&) func_, (Error &&) error))) {
        std::invoke((Func &&) func_, (Error &&) error);
        unifex::set_value((Receiver &&) receiver_);
      } else {
        UNIFEX_TRY {
          std::invoke((Func &&) func_, (Error &&) error);
          unifex::set_value((Receiver &&) receiver_);
        }
        UNIFEX_CATCH(...) {
          unifex::set_error((Receiver &&) receiver_, std::current_exception());
        }
      }
    } else {
      if constexpr (noexcept(std::invoke((Func &&) func_, (Error &&) error))) {
        unifex::set_value(
            (Receiver &&) receiver_,
            std::invoke((Func &&) func_, (Error &&) error));
      } else {
        UNIFEX_TRY {
          unifex::set_value(
              (Receiver &&) receiver_,
              std::invoke((Func &&) func_, (Error &&) error));
        }
        UNIFEX_CATCH(...) {
          unifex::set_error((Receiver &&) receiver_, std::current_exception());
        }
      }
    }
  }