15 template<
typename Ref,
typename Value>
18 template<
typename Ref,
typename Value>
21 template<
typename Ref>
24 template<concepts::Reference Yield>
28 auto await_ready()
noexcept ->
bool {
return false; }
30 void await_resume()
noexcept {}
38 m_pointer = util::addressof(
value);
49 template<
typename,
typename>
55 template<
typename Ref,
typename Value>
74 return static_cast<Ref
>(*m_coroutine.promise().m_pointer);
84 return a.m_coroutine.done();
91template<
typename Ref,
typename Value =
void>
95 struct PromiseType : BasePromiseType {
96 auto get_return_object()
noexcept ->
Generator {
108 m_coroutine.destroy();
113 util::swap(this->m_coroutine, other.m_coroutine);
119 m_coroutine.resume();
121 m_coroutine.address()) };
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition view_interface.h:26
Definition generator.h:92
auto operator=(Generator other) -> Generator &
Definition generator.h:112
auto begin()
Definition generator.h:117
PromiseType promise_type
Definition generator.h:102
auto end() const
Definition generator.h:124
Generator(Generator &&other)
Definition generator.h:104
~Generator()
Definition generator.h:106
Definition generator.h:58
GeneratorIterator(InPlace, Handle coroutine)
Definition generator.h:63
friend auto operator==(GeneratorIterator const &a, container::DefaultSentinel) -> bool
Definition generator.h:83
auto operator=(GeneratorIterator &&other) -> GeneratorIterator &
Definition generator.h:67
auto operator*() const -> Ref
Definition generator.h:72
GeneratorIterator(GeneratorIterator &&other)
Definition generator.h:65
void advance_one()
Definition generator.h:77
Definition generator.h:25
void unhandled_exception()
Definition generator.h:46
void return_void() noexcept
Definition generator.h:44
void await_transform()=delete
auto initial_suspend() noexcept
Definition generator.h:34
friend class GeneratorIterator
Definition generator.h:50
auto yield_value(Yield value) noexcept
Definition generator.h:37
auto final_suspend() noexcept
Definition generator.h:35
constexpr auto default_sentinel
Definition default_sentinel.h:6
Definition bind_back.h:16
meta::Conditional< concepts::LanguageVoid< Value >, Ref &&, Ref > GeneratorReference
Definition generator.h:19
meta::Conditional< concepts::Reference< Ref >, Ref, Ref const & > GeneratorYield
Definition generator.h:22
meta::Conditional< concepts::LanguageVoid< Value >, meta::RemoveCVRef< Ref >, Value > GeneratorValue
Definition generator.h:16
constexpr auto value
Definition value.h:34
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
constexpr struct di::util::SwapFunction swap
void unreachable()
Definition unreachable.h:4
Definition zstring_parser.h:9
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
std::coroutine_handle< Promise > CoroutineHandle
Definition coroutine.h:164
constexpr auto in_place
Definition in_place.h:8
std::suspend_always SuspendAlways
Definition coroutine.h:169
Definition default_sentinel.h:4
Definition iterator_base.h:14