The C++ Stories Weekly Newsletter

Join ~11000 developers who read about Modern C++, news reports, tools, and more! A new email every Monday.
Bonuses included! C++23/C++20/C++17 ref cards and more!

The above field is supplemented with consent to receive a newsletter containing information and marketing content about the cppstories.com portal from Bartłomiej Filipek codebf based in Krakow. The consent may be withdrawn at any time. See the full Privacy Policy.


See the latest articles:

C++ in 2021 - Survey

Updated:

It’s almost the end of the year! As usual, I started writing my “year” summary that I will publish on the 31st of December. Yet, this article won’t be possible without your input! I have a survey with just nine questions about C++ and your experience in 2021. Questions: C++ Standard used Your experience with C++17, C++20 Compiler used IDE and tools Best thing that happened It should take no more than 5 minutes :)

READ MORE...

Designated Initializers in C++20

Updated:

New Standard, new ways to initialize objects! With C++20, we get a handy way of initializing data members. The new feature is called designated initializers and might be familiar to C programmers. Let’s have a look at this small feature: The basics   Designated Initialization is a form of Aggregate Initialization.

READ MORE...

C++20: Heterogeneous Lookup in (Un)ordered Containers

Updated:

Would you like to gain 20…35 or even 50% speed improvements when searching in associative containers? In this blog post, we’ll explore a technique called “heterogenous access” that offers such impressive speedups. We’ll explore ordered containers, and the support for unordered collections added recently in C++20. Recap on heterogeneous lookup in ordered containers   Let’s bring the example and have a look at how this feature works for ordered containers.

READ MORE...

C++ Smart Pointers and Arrays

Updated:

Smart pointers are very versatile and can hold pointers not only to single instances but also to arrays. Is that only a theoretical use case? or maybe they might be handy in some cases? Let’s have a look. Smart pointers for T[]   At C++ Stories, you can find lots of information about smart pointers - see this separate tag for this area.

READ MORE...

6 Ways to Refactor new/delete into unique ptr

Updated:

In legacy code, you can often spot explicit new and delete lurking in various places and waiting to produce pointer-related issues. This blog post shows six patterns to improve that erroneous style and rely on modern techniques, especially unique_ptr and other helper standard types. Bonus point 1: if possible, we’ll also look at some existing code from open source projects!

READ MORE...

C++ Smart Pointers Gotchas

Updated:

While learning how to use the new C++ Standard, I encountered several intriguing cases with smart pointers. Casting? Array handling? Passing to functions? Let’s review some common concerns so that we don’t shoot yourself in the foot :) I created this post back in 2013, and I updated it in 2014 and recently in 2021.

READ MORE...

C++ Smart Pointers Reference Card

Updated:

Smart pointers available since C++11 are an essential foundation for writing secure code in Modern C++. Thanks to RAII (Resource Acquisition Is Initialization), they allow you to work with pointers to allocate memory or other managed objects efficiently. This blog post will show you the core points for working with those handy types.

READ MORE...

C++20 Oxymoron: constexpr virtual

Updated:

Two keywords, constexpr and virtual - can those two work together? Virtual implies runtime polymorphism, while constexpr suggests constant expression evaluation. It looks like we have a contradiction, does it? Read on and see why those conflicting terms might help us get simpler code. A basic example   Imagine that you work with some product list, and you want to check if a product fits in a given box size:

READ MORE...