Articles & Books

C++20 Coroutine: Under The Hood--Vishal Chovatiya

Know how they work.

C++20 Coroutine: Under The Hood

by Vishal Chovatiya

From the article:

A coroutine is one of the major feature introduced with the C++20 standard apart from Module, Ranges & Concept. And you see how happy I am to unfold it. I already set the baseline on this topic with my previous article that Coroutine in C Language, where we saw, how suspension-resumption of execution works! With this article “C++20 Coroutine: Under The Hood”, we will see how compiler creates magic & standard library helps it with basic infrastructure making C++20 coroutine more sophisticated(yet complex) & scalable/customizable...

Report from the virtual ISO C++ meetings in 2020 (core language)--Jason Merrill

Did you attend?

Report from the virtual ISO C++ meetings in 2020 (core language)

by Jason Merrill

From the article:

C++ standardization was dramatically different in 2020 from earlier years. The business of the International Organization for Standardization (ISO) committee all took place virtually, much like everything else during this pandemic. This article summarizes the C++ standardization proposals before the Core and Evolution Working Groups last year...

Coroutines series--Raymond Chen

The series continue.

C++ coroutines: Promise constructors

From the article:

So far, all of our coroutine promises have had only a default constructor. But the standard actually gives the promise access to the coroutine parameters, if it wants them...

A map through the three major coroutine series

From the article:

Our long national nightmare is not yet over: The three main coroutine series are now done, although that doesn’t mean I’m done with coroutines.

Here’s a map through the main series, at least. There is a direct route and a number of scenic routes...

A subtle way your await_suspend can access the coroutine frame when it shouldn’t

From the article:

As we learned in the very start of the series on coroutines, the await_suspend method cannot access the coroutine frame once it arranges for the coroutine to resume because that creates a race condition where the coroutine might already be resumed and possibly even run to completion before await_suspend finishes...

by Raymond Chen

 

Templates - First Steps--Rainer Grimm

A powerful tool.

Templates - First Steps

by Rainer Grimm

From the article:

The idea of this post is quite simple. I want to visualize templates and, in particular, the process of template instantiation. Thanks to C++ Insights, this visualization is pretty easy...

C++ coroutines: Converting among tasks that use the same promise--Raymond Chen

The series continue.

C++ coroutines: Converting among tasks that use the same promise

by Raymond Chen

From the article:

If the only difference between tasks is in the awaiter, then it’s possible to convert between them without the promise even knowing what happened. We have an example of this with our simple_task and com_simple_task, which differ only in the awaiter produced by the co_await operator. This means that we can actually convert between the two by simple wrapping the promise inside the other class...

Online C++ User Group Meetings in May 2021

The monthly overview of upcoming C++ User Group meetings!

Online C++ User Group Meetings in May 2021

by Jens Weller

From the article:

The monthly overview on upcoming C++ User Group meetings. A bit later then usual, seems my talk at C++now and announcing Meeting C++ 2021 has kept me a bit too busy.

Next week Tuesday: Meeting C++ online - May - Design Patterns - Facts and Misconceptions with Klaus Iglberger. If you're interested in this topic, Klaus also gives a training on Modern C++ and Design Patterns in June.

C++ coroutines: Waiting synchronously for our coroutine to complete--Raymond Chen

The series continue.

C++ coroutines: Waiting synchronously for our coroutine to complete

by Raymond Chen

From the article:

Last time, we added an extension point that permitted us to respond differently to the completion of the coroutine. We’re going to put that extension point to good use by adding the ability to wait synchronously for the coroutine to complete.

C++ coroutines: Adding COM context support to our awaiter--Raymond Chen

The series continue.

C++ coroutines: Adding COM context support to our awaiter

by Raymond Chen

From the article:

You may want to have awaiters that apply custom resume behavior. For example, in Windows, you are likely to want your awaiter to preserve the COM thread context. For X11 programming, you may want to the awaiter to return to the render thread if the co_await was initiated from the render thread. Today we’ll add the ability to customize the awaiter to our coroutine promise type...

C++ coroutines: Snooping in on the coroutine body--Raymond Chen

The series continue.

C++ coroutines: Snooping in on the coroutine body

by Raymond Chen

From the article:

A coroutine promise can snoop on the coroutine body by implementing a method named await_transform. Any time the coroutine body performs a co_await, the thing being awaited is passed through the await_transform method, and whatever await_transform returns is the thing that is actually awaited. This is the mysterious “We’re not ready to talk about step 1 yet” that kept reappearing in our introduction to awaitable objects...