24 lines
636 B
C++
24 lines
636 B
C++
#include <coroutine>
|
|
#include <future>
|
|
namespace zt{
|
|
template<class T>
|
|
struct Task{
|
|
struct promise_type;
|
|
struct promise_type{
|
|
std::promise<T> promise_;
|
|
void return_value(T value){promise_.set_value(value);}
|
|
auto initial_suspend(){
|
|
return std::suspend_always{};
|
|
}
|
|
auto final_suspend()noexcept{
|
|
return std::suspend_always{};
|
|
}
|
|
auto get_return_object(){
|
|
return Task<T>{};
|
|
}
|
|
void unhandled_exception(){
|
|
return;
|
|
}
|
|
};
|
|
};
|
|
} |