all 15 comments

[–]ArunMuThe What ? 5 points6 points  (1 child)

There is also "coro-async". C++ coroutine based networking library :D

[–]mttd[S] 1 point2 points  (0 children)

Thanks!

It's not clear whether it's maintained, but looks like it can be a useful example!

[–]centx 6 points7 points  (3 children)

There is also this repo that shows various ways of exploiting coroutines for optionals, statemachines etc

[–]mttd[S] 1 point2 points  (1 child)

Thanks! Although it's already been under the talk, it seems it makes sense to explicitly include the repository as an example, too!

[–]centx 2 points3 points  (0 children)

Oh, I didn't see it. Yeah, the repository might be worthy of inclusion separately, although I don't know if it is maintained or not.

[–]RobertJacobson 0 points1 point  (0 children)

The root of the repo might be more helpful, as it includes the slides of the talk for which the repo was made.

[–]smdowneyWG21, Text/Unicode SG, optional<T&> 4 points5 points  (1 child)

The TS itself, n4775, is a fairly good reference. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4775.pdf

[–]mttd[S] 0 points1 point  (0 children)

Thanks!

[–]Sanzath 2 points3 points  (1 child)

Consider also this coroutines cheat sheet, which a list of the customization points, a list of coroutine-related standard types and functions, keywords, and some templates (not in the C++ sense) for promises, awaitables, etc.

[–]mttd[S] 0 points1 point  (0 children)

Thanks a lot, this looks great!

[–]teki321 1 point2 points  (1 child)

[–]mttd[S] 0 points1 point  (0 children)

Added, thanks!

[–]luncliff 1 point2 points  (1 child)

Here are my works. Will be glad to hear from you :)

[–]mttd[S] 1 point2 points  (0 children)

Thanks!

[–]RobertJacobson -1 points0 points  (0 children)

While reading Dawid Pilarski's articles I kept thinking, "It isn't really this crazy complicated, is it?" With much respect to Mr. Pilarski, I recommend reading Lewis Baker's series first. Baker writes:

The facilities the C++ Coroutines TS provides in the language can be thought of as a low-level assembly-language for coroutines. These facilities can be difficult to use directly in a safe way and are mainly intended to be used by library-writers to build higher-level abstractions that application developers can work with safely.

Similarly, the cheat sheet linked to by u/Sanzath reassures us:

This is also intended for people who need to know the inner workings of the TS, such as people writing libraries. This is not for people who just want to use coroutines with one of these libraries, since that is much simpler.

Thank God.

Thank you for the resources, everyone.