update
This commit is contained in:
parent
de75f61cd3
commit
8a9d4aa7b3
@ -1,6 +1,7 @@
|
||||
#include <coroutine>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
|
||||
template<class T>
|
||||
@ -11,8 +12,20 @@ struct coroutine: std::coroutine_handle<Promise<T>>{
|
||||
using promise_type = ::Promise<T>;
|
||||
};
|
||||
|
||||
struct RAII{
|
||||
std::string name;
|
||||
RAII(const std::string &s):name(s){
|
||||
std::cout<<__FUNCTION__<<" "<<s<<'\n';
|
||||
}
|
||||
~RAII(){
|
||||
std::cout<<__FUNCTION__<<" "<<name<<'\n';
|
||||
}
|
||||
};
|
||||
|
||||
template<class T=void>
|
||||
struct Promise{
|
||||
Promise():raii("in promise"){};
|
||||
RAII raii;
|
||||
auto initial_suspend(){
|
||||
std::cout<<__FUNCTION__<<'\n';
|
||||
return std::suspend_always{};
|
||||
@ -37,11 +50,13 @@ struct Promise{
|
||||
std::cout<<__FUNCTION__<<' '<<t<<'\n';
|
||||
return std::suspend_always{};
|
||||
}
|
||||
|
||||
coroutine<T> h;
|
||||
};
|
||||
|
||||
|
||||
|
||||
coroutine<int> test(){
|
||||
RAII raii("in test");
|
||||
std::cout<<"testing\n";
|
||||
co_yield 1;
|
||||
co_yield 2;
|
||||
@ -56,4 +71,5 @@ int main(){
|
||||
handle.resume();
|
||||
std::cout<<__FUNCTION__<<'\n';
|
||||
}
|
||||
handle.destroy();//如果不destroy()那么~RAII in promise将不会显示,也不能将destroy()交给~Promise()管理,也不会~RAII in promise
|
||||
}
|
Loading…
Reference in New Issue
Block a user