Reverse For Loops in C++--Carlos Buchart

How do you do it?

Reverse For Loops in C++

by Carlos Buchart

From the article:

As we saw when working on dynamic bitsets, it can be useful to traverse a collection backwards, from its last element to its first one.

It would be nice to be able to use C++11 range for loops to iterate backwards. But unfortunately, there is no such reverse range-for: range-for only works forwards.

Let’s see how to traverse a collection backwards by using a range for loop...

Five Awesome C++ Papers for the Prague ISO Meeting and C++20 Status--Bartlomiej Filipek

Did you know them?

Five Awesome C++ Papers for the Prague ISO Meeting and C++20 Status

by Bartlomiej Filipek

From the article:

Continuing the tradition for other ISO C++ Meetings, I prepared a blog post where you’ll learn about:

  • The current status of C++20
  • an overview about the Prague ISO C++ Meeting (10th till 15th February 2020)
  • a few interesting papers that are worth reading

Let’s start!

Slides of the 29th of January 2020 BeCPP Meeting -- Marc Gregoire

On January 29th, 2020, the Belgian C++ Users Group had their next event sponsored by OMP. The slides and other material are now available online.

Slides of the 29th of January 2020 BeCPP Meeting

by Marc Gregoire

About the event:

  • “Coroutines in C++20” by Johan Vanslembrouck
  • “The evolution of the C++ Lambda” by Lieven de Cock

If you couldn't attend the event in person, or if you would like to go over the material again, you can download them from the BeCPP website.

A Universal I/O Abstraction for C++ -- Corentin Jabot

SG-11, the study group charged of all things concurrency and parallelism made forward progress and sent the proposal to LEWG - with the hope of landing a future revision in the C++23 draft. This is rather big news given that this work has been brewing for about a decade.

A Universal I/O Abstraction for C++

by Corentin Jabot

From the article:

The year is 2020 and even consummer CPUs feature double digits number of cores, storage offers 10GB/s read speeds and networks have to accommodate ever-growing traffic.

For a long time, the C++ committee seemed to think that either async file I/O didn’t make sense or was fundamentally irreconcilable with networking. This belief would lead to two inter-incompatible APIs in the standard, which would be a nightmare in term of usability (aka ASIO and AFIO).

It seems that there is finally a way to resolve these divides:

io_uring offers very high performance I/O which doesn’t discriminate on device type.
Sender Receiver provides the composable, low-cost, non-allocating abstraction while offering a simple mental model for asynchronous operations lifetime.
Coroutines make asynchronous i/o dead simple for the 99% use case.
Asynchronous Networking is nice.

Asynchronous I/O is better.

AWAIT ALL THE THINGS!

C++20 Concepts--omnigoat

Getting familiar with concepts.

C++20 Concepts

by omnigoat

From the article:

A quick syntax-based overview of C++20 Concepts, as they are in the standard (circa January 2020)...