Articles & Books

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!

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.


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)...

C++ in 2020--Jens Weller

Don't miss it!

C++ in 2020

by Jens Weller

From the article:

Now where the year is a few weeks old, lets see whats ahead for C++ in 2020!

I'll cover the Meeting C++ Community Survey, Conferences, Libraries & Releases, ISOCPP and C++20.

This blog post is based on a newsletter, which is based on a talk I gave at my User Group in Düsseldorf two weeks ago. Come and visit our meetings at the 3rd Wednesday of the month! My C++ User Group is also still looking for speakers in 2020, contact me if you're in town!

Decorating with a side effect -- Krzysztof Ostrowski

A taste of functional stack of effects.

Decorating with a side effect

by Krzysztof Ostrowski

From the article:

Logging is one of such overused features, that leads to costly side effects (consider distributed logging, a DLT, prevalent in automotive industry). This article describes a technique that is used to extract side effects brought by logging, and then compose with them back in a well defined manner.