Skip to content

ratiotile/coroutine-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ Coroutines in MSVC 2015

[n4134] - Resumable Functions rev2 was implemented in VS2015 Update 2 [1]

It appears that Visual Studio 2015 Update 3 actually implements https://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0057r0.pdf

an awaitable type needs to define 3 member functions.

bool await_ready() const;
void await_suspend(std::coroutine_handle<>);
T await_resume();

await_ready() is called when co_await is used on an awaitable. It returns false to suspend, otherwise it needs to have a value ready.

await_suspend() is called when await_ready() returns false, right before the function is suspended.

await_resume() is called right before this function is resumed.

The coroutine promise is looked up under the resumable function type R::promise_type A resumable function must specify coroutine promise, which has:

get_return_object()
initial_suspend()
final_suspend()

Coroutines must be of type resumable function:

struct promise_type;
constructor(coroutine_handle<promise_type> c);
destructor(); // call c.destroy()
[n4134]https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4134.pdf
[1]https://github.com/kirkshoop/await

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published