3 #pragma push_macro("new")
6 #ifndef DOXYGEN_SKIP_PROPERTY
9 struct suspend_on_initial;
10 struct suspend_on_final;
12 template <
typename _Ty>
15 using value_type = _Ty;
16 using state_type = state_t<value_type>;
17 using promise_type = promise_t<value_type>;
18 using future_type = future_t<value_type>;
20 promise_impl_t() noexcept {}
21 promise_impl_t(promise_impl_t&& _Right) noexcept =
default;
22 promise_impl_t& operator = (promise_impl_t&& _Right) noexcept =
default;
23 promise_impl_t(
const promise_impl_t&) =
delete;
24 promise_impl_t& operator = (
const promise_impl_t&) =
delete;
26 auto get_state() noexcept->state_type*;
28 suspend_on_initial initial_suspend() noexcept;
29 suspend_on_final final_suspend() noexcept;
30 template <typename _Uty>
31 _Uty&& await_transform(_Uty&& _Whatever) noexcept;
32 void set_exception(std::exception_ptr e);
34 void unhandled_exception();
36 future_type get_return_object() noexcept;
37 void cancellation_requested() noexcept;
39 using _Alloc_char = std::allocator<
char>;
40 void* operator new(
size_t _Size);
41 void operator delete(
void* _Ptr,
size_t _Size);
42 #if !RESUMEF_INLINE_STATE
44 counted_ptr<state_type> _state = state_future_t::_Alloc_state<state_type>(
false);
49 struct promise_t final :
public promise_impl_t<_Ty>
51 using typename promise_impl_t<_Ty>::value_type;
52 using promise_impl_t<_Ty>::get_return_object;
55 void return_value(U&& val);
57 suspend_always yield_value(U&& val);
61 struct promise_t<_Ty&> final :
public promise_impl_t<_Ty&>
63 using typename promise_impl_t<_Ty&>::value_type;
64 using promise_impl_t<_Ty&>::get_return_object;
66 void return_value(_Ty& val);
67 suspend_always yield_value(_Ty& val);
71 struct promise_t<void> final :
public promise_impl_t<void>
73 using promise_impl_t<void>::get_return_object;
76 suspend_always yield_value();
78 #endif //DOXYGEN_SKIP_PROPERTY
81 #pragma pop_macro("new")