2023 posts

C++ Insights

C++ Insights Episode 45: C++20s Designated Initializers

I published a new C++ insights episode: C++20s Designated Initializers. [...]
C++

When an empty destructor is required

In last month's post Why you shouldn't provide an empty destructor, I taught you the difference between user-provided and user-declared. I hope you remember the conclusion; never [...]
C++ Insights

C++ Insights Episode 44: Compilers are lazy, and this is good

I published a new C++ insights episode: Compilers are lazy, and this is good. [...]
C++

Why you shouldn't provide an empty destructor

Today's post is a written version of C++ Insights episode 38 I published back in May. I decided to write this post to be able to use what I teach you in next month's post. In case [...]
C++ Insights

C++ Insights Episode 43: A copy constructor cannot be a template

I published a new C++ insights episode: A copy constructor cannot be a template. [...]
Conference

CppNorth 2023 recording of my talk "C++ Feature Coroutines, Beginner Friendly" is available

I'm pleased to announce that the recording of my talk at CppNorth C++ Feature Coroutines, Beginner Friendly of my presentation is available YouTube: [...]
C++

Using C++23s constexpr unique_ptr

Back in 2022, my paper P2273R3: Making std::unique_ptr constexpr was accepted for C++23. All the time, I planned to provide an implementation for libc++ but never found the time. [...]
C++ Insights

C++ Insights now uses Clang 17

Today, I managed to switch C++ Insights to Clang 17! [...]
Conference

CppIndia Con 2023 recording of my talk "C++ Coroutines from scratch" is available

I'm pleased to announce that the recording of my talk at CppIndia Con C++ Coroutines from scratch of my presentation is available youtube: [...]
C++ Insights

C++ Insights now uses Clang 16

On Monday, I finally managed to switch C++ Insights to Clang 16! [...]
C++ Insights

C++ Insights Episode 42: C++20: When is a struct an aggregate

I published a new C++ insights episode: C++20: When is a struct an aggregate. [...]
Publications

Overload Article: aaa

An article I wrote for the Accu Overload magazine "C++20 Dynamic Allocations at Compile-time" is available in issue 176. It is available as a printed edition as well as online. [...]
C++

Best Speaker Award

I'm very pleased to tell you that I received a Best Speaker Award from a German conference ESE Kongress for my talk "C++ 20 Templates - Die nächste Generation" I presented there [...]
C++

Control your numbers in C++

Today's post is probably easier and shorter than usual. But that doesn't mean the feature is any less powerful. [...]
C++ Insights

C++ Insights Episode 41: How type-traits work

I published a new C++ insights episode: How type-traits work. [...]
C++

A strongly typed bool

Today I like to share a pattern I have used for some time. The pattern is generally well-received whenever I present it during one of my training courses. I still don't know [...]
C++ Insights

C++ Insights Episode 40: The traps of returning references

I published a new C++ insights episode: The traps of returning references. [...]
C++

Visiting a std::variant safely

I assume you all know C++17's type-safe replacement for unions: std::variant. Here you look at a great replacement for unions as it knows the active type and destructs that object [...]
C++ Insights

C++ Insights Episode 39: Recursion-free templates with C++17s fold expressions

I published a new C++ insights episode: Recursion-free templates with C++17s fold expressions. [...]
C++

constexpr functions: optimization vs guarantee

The feature of constant evaluation is nothing new in 2023. You have constexpr available since C++11. Yet, in many of my classes, I see that people still struggle with constexpr [...]
C++ Insights

C++ Insights Episode 38: User-provided vs. user-declared

I published a new C++ insights episode: User-provided vs. user-declared. [...]
C++ Insights

Happy 5th anniversary C++ Insights

This year we celebrate the 5th anniversary of C++ Insights! [...]
C++

Evaluation order in C++ and uniform initialization

In today's post, you learn or get reminded about an interesting benefit of uniform initialization. [...]
C++ Insights

C++ Insights Episode 37: C++20's range-based for-loop with initializer

I published a new C++ insights episode: C++20's range-based for-loop with initializer. [...]
C++

push_back vs emplace_back: When to use what

In today's post, I like to address a topic already discussed by others. However, in classes or code reviews, I still see the confusion. That's why I want to highlight this once [...]
C++ Insights

C++ Insights Episode 36: Coroutine customization points

I published a new C++ insights episode: Coroutine customization points. [...]
C++

static, inline, or an unnamed namespace what's the difference

Today's post teaches the difference between a function declared static, inline, or in an unnamed namespace. "What of these should I use when?" is a question that occasionally [...]
C++

C++ Insights Vim plugin available

Great news for all VIM lovers FreedWu developed a Vim plugin to use C++ Insights in your favorite editor. The plugin is available on GitHub: github.com/Freed-Wu/cppinsights.vim. [...]
C++

Equality of a string class that is only instantiable at compile-time

Today's post continues with last month's post A string class that is only instantiable at compile-time. [...]
C++

A string class that is only instantiable at compile-time

Do you know this, sometimes you have a class that should only be instantiable at compile-time? By that, you can build several assumptions on such a class. For example, that the [...]