Iros
 
Loading...
Searching...
No Matches
env_promise.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/util/coroutine.h"
8
9namespace di::execution {
10namespace detail {
11 template<typename Promise>
13 using promise_type = Promise;
14 };
15}
16
17template<typename Env>
18struct EnvPromise : WithAwaitTransform<EnvPromise<Env>> {
19 auto get_return_object() noexcept -> detail::DummyReturnObject<EnvPromise>;
20 auto initial_suspend() noexcept -> SuspendAlways;
21 auto final_suspend() noexcept -> SuspendAlways;
22 void unhandled_exception() noexcept;
23 void return_void() noexcept;
24
25 auto unhandled_stopped() noexcept -> std::coroutine_handle<>;
26 auto unhandled_error(vocab::Error) noexcept -> std::coroutine_handle<>;
27
28 template<typename E>
29 friend auto tag_invoke(types::Tag<get_env>, EnvPromise<E> const&) noexcept -> E const&;
30};
31}
Definition read.h:70
Definition bulk.h:30
constexpr auto get_env
Definition get_env.h:27
Definition method.h:5
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition lazy.h:165
StatusCode< Erased< long > > Error
Definition error.h:8
std::suspend_always SuspendAlways
Definition coroutine.h:169
Definition enable_generate_structed_bindings.h:46
Definition env_promise.h:18
auto initial_suspend() noexcept -> SuspendAlways
void return_void() noexcept
void unhandled_exception() noexcept
auto final_suspend() noexcept -> SuspendAlways
auto unhandled_stopped() noexcept -> std::coroutine_handle<>
auto unhandled_error(vocab::Error) noexcept -> std::coroutine_handle<>
friend auto tag_invoke(types::Tag< get_env >, EnvPromise< E > const &) noexcept -> E const &
auto get_return_object() noexcept -> detail::DummyReturnObject< EnvPromise >
Definition with_await_transform.h:14
Definition env_promise.h:12
Promise promise_type
Definition env_promise.h:13