16 template<
typename L, std::default_initializable R>
36 template<
typename L,
typename R>
41 template<
typename ErrorHandler>
61 template<
typename L,
typename R,
typename ErrorHandler =
void>
72 template<
typename Promise>
77 auto& promise = handle.promise ();
78 if constexpr (Promise::IsVoid)
79 promise.return_void ();
81 promise.return_value (Promise::ReturnType_t::Left (
Either_.GetLeft ()));
93 template<
typename L,
typename R,
typename F>
94 requires std::invocable<F, const L&>
97 return { either, { std::forward<F> (errorHandler) } };
103 template<
typename L,
typename R>
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(L &&left)
void HandleError(auto &&)
void await_suspend(std::coroutine_handle< Promise > handle)
R await_resume() const noexcept
EitherAwaiterErrorHandler< ErrorHandler > Handler_
bool await_ready() const noexcept