New Attributes with C++20

With C++20, we got new and improved attributes such as [[nodiscard("reason")]], [[likely]], [[unlikely]], and [[no_unique_address]]. In particular, [[nodiscard("reason")]] allows it to express the intention of your interface way clearer.

Read more
Views: 15409

Compiler Explorer, PVS-Studio, and Terrible Simple Bugs

Do you know that PVS-Studio is integrated into the Compiler Explorer? If not, you should definitely read this guest post from Andrey Karpov including a promo code. 

Read more
Views: 8366

More Lambda Features with C++20

Lambdas in C++20 can be default-constructed and support copy-assignment when they have no state. Lambdas can be used in unevaluated contexts. Additionally, they detect when you implicitly copy the this pointer. This means a significant cause of undefined behaviour with lambdas is gone.

Read more
Tags: lambdas, C++20
Views: 13835

The C++ Standard Library: The Third Edition includes C++20

Just updated: The C++ Standard Library: What every professional C++ programmer should know about the C++ standard library.

Read more
Views: 17808

More Powerful Lambdas with C++20

Thanks to C++20, lambdas become more powerful. From the various lambda improvements, template parameters for lambdas are my favorite ones.

Read more
Views: 33291

Various Template Improvements with C++20

Admittedly, I present in this post a few small improvements to templates and to C++20 in general. Although these improvements may seem not so impressive to you, they make C++20 more consistent and, therefore, less error-prone when you program generic.

Read more
Views: 15130

Solving the Static Initialization Order Fiasco with C++20

According to the FAQ of isocpp.org is the static initialization order fiasco "a subtle way to crash your program". The FAQ continues: The static initialization order problem is a very subtle and commonly misunderstood aspect of C++. ". Today, I write about this very subtle and misunderstood aspect of C++.  

Read more
Views: 29040

Two new Keywords in C++20: consteval and constinit

With C++20 we get two new keywords: consteval and constinit. consteval produces a function that is executed at compile-time and constinit guarantees that a variable is initialized at compile-time.

Read more
Tags: C++20
Views: 49460

Designated Initializers

Designated initialization is an extension of aggregate initialization and empowers you to directly initialize the members of a class type using their names.

Read more
Views: 39694

C++20: Optimized Comparison with the Spaceship Operator

In this post, I conclude my miniseries to the three-way comparison operator with a few subtle details. The subtle details include the compiler-generated the == and != operators and the interplay of classical comparison operators and the three-way comparison operator.

Read more
Views: 10889

My Newest E-Books

Course: Modern C++ Concurrency in Practice

Course: C++ Standard Library including C++14 & C++17

Course: Embedded Programming with Modern C++

Course: Generic Programming (Templates)

Course: C++ Fundamentals for Professionals

Interactive Course: The All-in-One Guide to C++20

Subscribe to the newsletter (+ pdf bundle)

Blog archive

Source Code

Visitors

Today 455

Yesterday 7228

Week 28485

Month 133224

All 8432440

Currently are 169 guests and no members online

Kubik-Rubik Joomla! Extensions

Latest comments