1#ifndef NEFORCE_CORE_ASYNC_COROUTINE_HPP__
2#define NEFORCE_CORE_ASYNC_COROUTINE_HPP__
13#ifdef NEFORCE_STANDARD_20
16NEFORCE_BEGIN_NAMESPACE__
32template <
typename Res,
typename... Args>
37template <
typename,
typename =
void>
38struct coroutine_traits_impl {};
40template <
typename Res>
41struct coroutine_traits_impl<Res,
void_t<typename Res::promise_type>> {
42 using promise_type =
typename Res::promise_type;
52template <
typename Res,
typename... Args>
64template <
typename Promise =
void>
78template <
typename Promise>
81 return reinterpret_cast<size_t>(
handle.address());
121 NEFORCE_NODISCARD
constexpr bool await_ready()
const noexcept {
return false; }
123 constexpr void await_resume()
const noexcept {}
134 NEFORCE_NODISCARD
constexpr bool await_ready()
const noexcept {
return true; }
136 constexpr void await_resume()
const noexcept {}
141NEFORCE_END_NAMESPACE__
noop_coroutine_handle noop_coroutine() noexcept
获取空操作协程句柄
std::coroutine_handle< Promise > coroutine_handle
协程句柄
std::noop_coroutine_handle noop_coroutine_promise
空操作协程的promise类型别名
coroutine_handle< noop_coroutine_promise > noop_coroutine_handle
空操作协程句柄类型别名
thread::native_handle_type handle() noexcept
获取当前线程句柄