void set_value()

in include/unifex/let_value.hpp [135:159]


  void set_value(Values&&... values) && noexcept {
    auto& op = op_;
    UNIFEX_TRY {
      scope_guard destroyPredOp =
        [&]() noexcept { unifex::deactivate_union_member(op.predOp_); };
      auto& valueTuple =
        op.values_.template construct<decayed_tuple<Values...>>((Values &&) values...);
      destroyPredOp.reset();
      scope_guard destroyValues = [&]() noexcept {
        op.values_.template destruct<decayed_tuple<Values...>>();
      };
      auto& succOp =
          unifex::activate_union_member_with<successor_operation<Values...>>(
            op.succOp_,
            [&] {
              return unifex::connect(
                  std::apply(std::move(op.func_), valueTuple),
                  successor_receiver<Operation, Values...>{op});
            });
      unifex::start(succOp);
      destroyValues.release();
    } UNIFEX_CATCH (...) {
      unifex::set_error(std::move(op.receiver_), std::current_exception());
    }
  }