Articles & Books

Zero-cost exceptions aren’t actually zero cost--Raymond Chen

The devil is in the details.

Zero-cost exceptions aren’t actually zero cost

by Raymond Chen

From the article:

There are two common models for exception handling in C++. One is by updating some program state whenever there is a change to the list of things that need to be done when an exception occurs, say, because a new exception handler is in scope or has exited scope, or to add or remove a destructor from the list of things to execute during unwinding. Another model is to use metadata to describe what to do if an exception occurs. There is no explicit management of the state changes at runtime; instead, the exception machinery infers the state by looking at the program counter and consulting the metadata...

WinReg: Simplify Windows Registry Programming in C++ -- Giovanni Dicanio

Windows Registry programming using the native C API is cumbersome and bug-prone. Fortunately, you can simplify that using a modern C++ library like WinReg.

Simplifying Windows Registry Programming with the C++ WinReg Library

by Giovanni Dicanio

From the blog post:

WinReg is a modern C++ library that exposes a high-level public interface to simplify the access to the Windows Registry.

 

Why not to use the STL?--Jeremy Ong

Why do you think?

Twitter thread

by Jeremy Ong

From the thread:

With all the discussion on the STL, I wanted to make a quick thread to summarize the main reasons why many AAA studios (correctly) opt out of the STL. This isn't to say the STL isn't for *anyone*, but the reasons to avoid using it aren't unfounded either...

Ways to Refactor Toggle/Boolean Parameters in C++--Bartlomiej Filipek

What's your preferred way?

Ways to Refactor Toggle/Boolean Parameters in C++

by Bartlomiej Filipek

From the article:

Boolean parameters in a function might be misleading and decrease its readability. If you have a poorly named function like:

DoImportantStuff(true, false, true, false);

As you can imagine, it’s not clear what all those parameters mean? What’s the first true? What does the last false mean? Can we improve code in such cases?

Let’s have a look at possible improvements...

Wordlexpr: compile-time Wordle in C++20 -- Vittorio Romeo

This article shows a fully compile-time implementation of the popular game Wordle in C++20, and explains its inner workings:

wordlexpr: compile-time wordle in c++20

by Vittorio Romeo

From the article:

It felt wrong to not participate in the Wordle craze, and what better way of doing so than by creating a purely compile-time version of the game in C++20? I proudly present to you… Wordlexpr!

https://www.youtube.com/watch?v=wp3LPrhu2Sk

My favorite C++20 feature--Marius Elvert

Did you know?

My favorite C++20 feature

by Marius Elvert

From the article:

As I evolved my programming style away from mutating long-lived “big” objects and structures and towards are more functional and data-oriented style based mainly on pure functions, I also find myself needing a lot more structs. These naturally occur as return types for functions with ‘richer’ output if you do not want to use std::tuple or other ad-hoc types everywhere. If you see a program as a sequence of data-transformations, I guess the structs are the immediate representations encoded in the type system...