16 template<
typename L, std::default_initializable R>
36 template<
typename L,
typename R>
41 template<
typename Promise>
45 auto& promise = handle.promise ();
46 if constexpr (Promise::IsVoid)
47 promise.return_void ();
49 promise.return_value (Promise::ReturnType_t::Left (error));
54 template<
typename ErrorHandler>
74 template<
typename L,
typename R,
typename ErrorHandler =
void>
98 template<
typename L,
typename R,
typename F>
99 requires std::invocable<F, const L&>
102 return { either, { std::forward<F> (errorHandler) } };
108 template<
typename L,
typename R>
void TerminateLeftyCoroutine(std::coroutine_handle< Promise > handle, const auto &error)
IgnoreLeft(Either< L, R >) -> IgnoreLeft< L, R >
R RightOr(const Either< L, R > &either, F &&f)
Util::detail::EitherAwaiter< L, R, F > WithHandler(const Util::Either< L, R > &either, F &&errorHandler)
R await_resume() const noexcept
void await_suspend(auto) const noexcept
bool await_ready() const noexcept
void HandleError(auto &&)
void HandleError(L &&left)
void await_suspend(auto handle)
R await_resume() const noexcept
EitherAwaiterErrorHandler< ErrorHandler > Handler_
bool await_ready() const noexcept