The road to 'import boost': a library developer's journey into C++20 modules -- Rubén Pérez Hidalgo

C++20 modules have been in the standard for more than 5 years already. They promise to deliver a big change to how we write C++, but their adoption hasn't been as widespread as one would have expected. This talk is a deep dive into the practical aspects of C++20 modules, exploring the reality of the ecosystem as it is today.

The road to 'import boost': a library developer's journey into C++20 modules

Rubén Pérez Hidalgo

Watch now:

Slides of the 13th of May 2026 BeCPP Meeting

On May 13th 2026, I organized the next Belgian C++ Users Group event. There were 2 sessions:

  • “Designing Data for Performance and Maintainability” by Laurent Carlier
  • “The fastest Java Virtual Machine is the C++26 compiler” by Koen Samyn

You can find the schedule (with abstracts), slides, and pictures on the BeCPP blog:

  • Schedule: https://becpp.org/blog/2026/04/06/next-becpp-ug-meeting-planned-for-may-13th-2026/
  • Slides: https://becpp.org/blog/2026/05/20/slides-of-the-13th-of-may-2026-becpp-meeting/
  • Pictures: https://becpp.org/blog/2026/05/20/pictures-of-the-13th-of-may-2026-becpp-meeting/

Let's make a programming language

We’re kicking off a webinar series on how to build your own programming language in C++.

Let's make a programming language. Parser

by Yuri Minaev

Watch now:

We’re continuing our webinar series on building your own programming language. In the previous sessions, we implemented a lexer for our language. In this upcoming webinar (May 21, 2026, 01:00 PM UTC+1), we’ll move on to the next step — the parser. In our experience, any parser starts with parsing expressions, so that’s exactly where we’ll begin. We’ll explain what a parser is, walk through the recursive descent approach, and then demonstrate how to build your own expression parser from scratch.

Past webinars: IntroGrammarsLexer.

 

CppCon 2025 Concept-based Generic Programming -- Bjarne Stroustrup

stroustrup-concept.pngRegistration is now open for CppCon 2026! The conference starts on September 12 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year's conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2026!

Concept-based Generic Programming

by Bjarne Stroustrup

Summary of the talk:

This talk presents programming techniques to illustrate the facilities and principles of C++ generic programming using concepts. Concepts are C++’s way to express constraints on generic code. As an initial example, it provides a simple type system that eliminate narrowing conversions and provides range checking.

Concepts are used throughout to provide user-defined extensions to the type system. The aim is to show their utility and the fundamental ideas behind them, rather than to provide a detailed or complete explanation of C++’s language support for generic programming or the extensive support provided by the standard library.

The final sections briefly present design rationales and origins for key parts of the concept design, including use patterns, the relationship to Object-Oriented Programming, value arguments, syntax, concept type-matching, and definition checking. They also mention static reflection, a C++26 improvements in the support of general programming.

Call for Sponsors - Meeting C++ 2026

This years Meeting C++ conference is on the 26th - 28th November!

Meeting C++ 2026: Call for Sponsors

by Jens Weller

from the article:

Have you thought about the possibilty that you could have your employer sponsor Meeting C++ 2026?

Maybe your employer is interested in being present as a sponsor at this years Meeting C++ conference? With the call for talks closing on June 4th, now is the ideal time to talk about sponsorships for Meeting C++!

The 15th Meeting C++ conference is looking for sponsors! Come to Berlin in late November and be part of a large gathering of the C++ community!

 

What reinterpret_cast doesn't do -- Andreas Fertig

Depositphotos_347968346_S.jpgIn today's post, I will explain one of C++'s biggest pitfalls: reinterpret_cast. Another title for this post could be: This is not the cast you're looking for!

What reinterpret_cast doesn't do

Andreas Fertig

From the article:

My motivation for this blog post comes from multiple training classes I thought over the past several months and a couple of talks I gave. Since C++23, you have a new facility in the Standard Library: std::start_lifetime_as. When teaching class with a focus on embedded environments or presenting talks with such a focus, I started to add std::start_lifetime_as to the material. With an interesting outcome.

The feedback I get is roughly:

  • why do I need std::start_lifetime_as, I already have reinterpret_cast?
  • why can I use reinterpret_cast?

If you never heard of start_lifetime_as please consider reading my post, The correct way to do type punning in C++ - The second act.

PVS-Studio in CMake: It's official now

If you're working on a cross-platform project in C or C++, you usually don't rely on a single build system, but instead use a build script generator. CMake, the most popular one, has recently been officially integrated with PVS-Studio static analyzer for these languages.

PVS-Studio in CMake: It's official now

by Taras Shevchenko

From the article:

Using the built-in integration to analyze code limits your options for interacting with the analysis results: the PVS-Studio report is not saved, since source code files are analyzed individually. So, the report conversion via plog-converter is unavailable, but you can aggregate analyzer warnings in CDash—a test result monitoring system also developed by Kitware. The developers on the CMake team did just that—you can see the result of the integration here.

 

BeCPP Symposium 2026 - Gabriel Dos Reis - Tightening the Screws with C++ Profiles

BeCPP Symposium 2026 (organized by BeCPP): Now on YouTube!

Gabriel Dos Reis - Tightening the Screws with C++ Profiles

Abstract:

The C++ community has been challenged to provide practical solutions to the problem of memory safety prevalent in some software with large blast radius.  By "practical", I mean solutions that scale to billions of lines of existing running code that deliver value every single day.  The constraints we are dealt afford us neither the luxury of pausing the world for complete rewrite from scratch, nor only focusing on "future", yet to be written, code.  C++ profiles are a tooling-based evolutionary approach that meets those constraints.  They enable the C++ community to tackle similar problems in a single, extensible, and flexible framework.

About the Speaker:

Dr. Gabriel Dos Reis is an Architect for Visual Studio at Microsoft, working in the area of large scale software construction, tools, and technique.  His contributions to C++ include scalable generic programming, pioneering compile-time computation, language support for modularity, safety, and security.  He is interested in all aspects of software construction with bias towards computational logic, formal methods, and the fun of building useful tools.

 

What Happens When a Destructor Throws -- Sandor Dargo

SANDOR_DARGO_ROUND.JPGEven experienced C++ developers sometimes stumble on a deceptively simple question: what actually happens when a destructor throws an exception? This post breaks down the mechanics behind stack unwinding, noexcept, and why throwing from destructors is almost always a bad idea

What Happens When a Destructor Throws

by Sandor Dargo

From the article:

Recently I wrote about the importance of finding joy in our jobs on The Dev Ladder. Mastery and deep understanding are key elements in finding that joy, especially now that generating code is cheap and increasingly done better by AI than by us.

Then a memory surfaced. I frequently ask during interviews — as part of a code review exercise — what happens when a destructor throws. Way too many candidates, even those interviewing for senior positions, cannot answer the question. Most say it’s bad practice, but cannot explain why. Some say the program might terminate. Getting an elaborate answer is rare.

I’m not saying it’s a dealbreaker, but it definitely doesn’t help.

Let’s see what actually happens.

The role of a destructor

A destructor is the key to implementing the RAII idiom. RAII matters because after you acquire a resource, things might go south. A function might need to return early, or it might throw. Making sure resources are released is cumbersome, and the cleanest way to achieve it is to wrap both acquisition and release in an object that handles this automatically.

But what if the release itself is not successful?

Destructors have no return value, so error reporting is limited. Typical options include logging, storing error state, or (discouraged) throwing.

Why did I mark throwing an exception discouraged?

C++: The Documentary trailer

Sponsored by HRT and produced by CultRepo, we're pleased to share the official trailer for C++: The Documentary.

The trailer premieres today at 19:00 UTC. Click Notify me on the YouTube Premiere page to get a reminder when it goes live.

The film will have its world premiere on May 28 at a special live event in New York City’s Financial District, followed by a panel discussion that will be recorded for later release. C++: The Documentary will be released worldwide on YouTube on June 4, with the panel recording following a few days later.

cppdoc-trailer.png