2025

2025-09 Mailing Available

The 2025-09 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N5020 2026-11 Rio De Janeiro, Brazil Matheus Izvekov 2025-09-10 2025-09 All of WG21
P2953R2 Forbid defaulting operator=(X&&) && Arthur O'Dwyer 2025-09-02 2025-09 P2953R1 EWGI SG17: EWG Incubator
P3347R5 Invalid/Prospective Pointer Operations Paul E. McKenney 2025-08-27 2025-09 P3347R4 CWG Core
P3567R1 `flat_meow` Fixes Hui Xie 2025-09-06 2025-09 P3567R0 LWG Library
P3579R2 Fix matching of constant template parameters when matching template template parameters Matheus Izvekov 2025-09-10 2025-09 P3579R1 CWG Core
P3612R0 Harmonize proxy-reference operations (LWG 3638 and 4187) Arthur O'Dwyer 2025-09-02 2025-09 LWG Library
P3666r0 Bit-precise integers Jan Schultke 2025-09-11 2025-09 SG6 Numerics,SG22 Compatibility,EWG Evolution,LEWG Library Evolution
P3688R3 ASCII character utilities Jan Schultke 2025-09-09 2025-09 P3688R2 SG16 Unicode
P3695R1 Deprecate implicit conversions between Unicode character types Jan Schultke 2025-09-09 2025-09 P3695R0 SG16 Unicode,EWG Evolution
P3702R2 Stricter requirements for document submissions (SD-7) Jan Schultke 2025-09-10 2025-09 P3702R1 All of WG21
P3754R1 Slides for P3100R2 presentation to EWG Timur Doumler 2025-08-21 2025-09 P3754R0 EWG Evolution
P3776R0 More trailing commas Jan Schultke 2025-08-26 2025-09 EWG Evolution
P3776R1 More trailing commas Jan Schultke 2025-09-09 2025-09 P3776R0 EWG Evolution
P3784R1 range-if Michael Florian Hava 2025-09-10 2025-09 P3784R0 EWGI SG17: EWG Incubator
P3786R0 Tuple protocol for fixed-size spans Michael Florian Hava 2025-08-21 2025-09 LEWG Library Evolution
P3811R0 default comparison memory safety Jarrad J Waterloo 2025-08-15 2025-09 SG23 Safety and Security
P3812R0 const and & in default member functions Jarrad J Waterloo 2025-08-16 2025-09 EWG Evolution,CWG Core
P3813R0 execution::task::valueless() Michael Florian Hava 2025-09-10 2025-09 LEWG Library Evolution
P3815R0 Add scope_association concept to P3149 Jessica Wong 2025-09-01 2025-09 All of WG21
P3816R0 Hashing meta::info Matt Cummins 2025-09-01 2025-09 SG7 Reflection,LEWG Library Evolution,LWG Library,All of WG21
P3818R0 constexpr exception fix for potentially constant initialization Hana Dusíková 2025-08-31 2025-09 LEWG Library Evolution
P3818R1 constexpr exception fix for potentially constant initialization Hana Dusíková 2025-09-09 2025-09 P3818R0 LEWG Library Evolution
P3819R0 Remove evaluation_exception() from contract-violation handling for C++26 Peter Bindels 2025-09-05 2025-09 LEWG Library Evolution
P3820R0 Split constexpr uncaught_exceptions into distinct runtime and consteval functions Lénárd Szolnoki 2025-08-31 2025-09 LEWG Library Evolution
P3820R1 Fix constexpr uncaught_exceptions and current_exception Lénárd Szolnoki 2025-09-06 2025-09 P3820R0 LEWG Library Evolution
P3822R0 Conditional noexcept specifiers in compound requirements Viacheslav Luchkin 2025-09-01 2025-09 EWGI SG17: EWG Incubator,EWG Evolution
P3823R0 Wording for US NB comment 10 Arthur O'Dwyer 2025-09-10 2025-09 EWG Evolution
P3824R0 Static storage for braced initializers NBC examples Jarrad J Waterloo 2025-09-06 2025-09 SG23 Safety and Security,CWG Core
P3827R0 Wording for US NB comment 9 Arthur O'Dwyer 2025-09-10 2025-09 EWG Evolution
P3829R0 Contracts do not belong in the language David Chisnall 2025-09-03 2025-09 EWG Evolution,CWG Core,LWG Library
P3830R0 NB-Commenting is Not a Vehicle for Redesigning inplace_vector Nevin Liber 2025-09-03 2025-09 LEWG Library Evolution
P3831R0 Contract Labels Should Use Annotation Syntax Yihe Li 2025-09-06 2025-09 SG21 Contracts
P3832R0 Timed lock algorithms for multiple lockables Ted Lyngmo 2025-09-06 2025-09 LEWGI SG18: LEWG Incubator
P3834R0 Defaulting the Compound Assignment Operators Matthew Taylor 2025-09-10 2025-09 EWGI SG17: EWG Incubator
P3835R0 Contracts make C++ less safe -- full stop John Spicer 2025-09-08 2025-09 EWG Evolution,CWG Core,LWG Library
P3836R0 Make optional<T&> trivially copyable Jan Schultke 2025-09-11 2025-09 LEWG Library Evolution
P3838R0 Restoring Private Module Fragments Alisdair Meredith 2025-09-10 2025-09 CWG Core

Planning the next Meeting C++ job fairs

Meeting C++ is hosting a job fair in October online and planning a job fair in November in Berlin at Meeting C++ 2025!

Planning the next Meeting C++ job fairs

by Jens Weller

From the article:

The next Meeting C++ online job fair is planned for October 14th & 15th, also I'd like to talk about the onsite job fair plans for Meeting C++ 2025!

If you have open positions you should advertise them in the bi-weekly Meeting C++ Jobs Newsletter, which now also powers the candidate listing of Meeting C++ with 80+ international candidates at the moment.

 

Format your own type (Part 1) -- Sandor Dargo

SANDOR_DARGO_ROUND.JPGI recently published two posts about how C++26 improves std::format and the related facilities. (If you missed them, here are Part 1 and Part 2). Now it’s time to explore how you can format your own types using std::format.

Format your own type (Part 1)

by Sandor Dargo

From the article:

std::format was introduced in C++20 and is based on Victor Zverovich’s <fmt> library, which in turn was inspired by Python’s string formatting capabilities.

Let’s skip the fancy formatting options and simply see how to interpolate values using std::format.

#include <format>
#include <iostream>
#include <string>

int main() {
    std::string language{"C++"};
    int version{20};
    std::cout << std::format("{}{} is fun", language, version) << '\n';
}

/*
C++20 is fun
*/

That was easy.

Now imagine you want to print your own type. That won’t work by default.

CppCon 2025 Changing /std:c++14 to /std:c++20 - How Hard Could It Be? -- Keith Stockdale

Registration is now open for CppCon 2025! The conference starts on September 13 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2025!

Changing /std:c++14 to /std:c++20 - How Hard Could It Be?

Monday, September 15 15:15 - 16:15 MDT

by Keith Stockdale

Summary of the talk:

Rare put in huge amounts of work to bring Sea of Thieves to PlayStation 5 and to upgrade from the old XDK and UWP platforms to the new GDK platform. In this session, Rare will discuss why they made the decision to take this opportunity to also upgrade from C++14 to C++20. It shouldn’t be much harder than changing a 14 to a 20, right? How hard could it be?

Rare will discuss all the work that was involved in upgrading their language standard and share some anecdotes of some of the challenges that were met along the way. They will go through the benefits that they have felt from this upgrade along with some plans for continuing this work in the future.

Keith Stockdale is a Northern Irish senior software engineer who has been working on the Engine and Rendering teams at Rare Ltd for the last 8 years working on Sea of Thieves. At Rare, Keith's main areas of focus are involved in maintaining and creating general purpose simulations that run on the GPU. For example, he is the owner of the GPU particle system that drives the visual effects in Sea of Thieves. Keith is enthusiastic about promoting writing good quality code, whether it is running on the CPU on the GPU. He is driven towards ensuring that the code-bases he works in are enjoyable to work in for all current and future developers on his team.

C++ Day 2025

A full day of C++ in Pavia (Italy) on October 25:

C++ Day 2025

 

An event organized by the Italian C++ Community and SEA Vision.

Sponsors: SEA Vision, ELT, Sigeo (and others in the pipeline).

 

All talks will be in English.

 

In a nutshell

Launched in 2016, C++ Day is a community-driven event format by the Italian C++ Community, co-organized with external partners like companies and universities.

The C++ Day 2025 will be held in person on October 25 in Pavia, a joint effort between the Italian C++ Community and SEA Vision, who is also generously hosting the event at their venue.

The event is free to attend, runs for an entire day, and includes coffee breaks and lunch.

 

Who should attend the C++ Day 2025?

This event is made by passionate C++ professionals for C++ professionals, companies, students and enthusiasts.

 

What can I find at the C++ Day 2025?

  • tech talks
  • 2+ hours of networking
  • Some Sponsors on site
  • 2 coffee breaks and lunch included
  • Cozy atmosphere, games and gadgets

You can refer to the detailed program for more information.

 

When does the C++ Day 2025 take place?

The event will be held on October 25, 2025 at SEA Vision headquarters, in Pavia.

Open doors at 8.30 AM. The event starts at 9.15 AM and will last for a full day.

 

Who supports this event?

Sponsors: SEA Vision, ELT, Sigeo (and others in the pipeline).
 

Do I need to register?

The C++ Day 2025 is free, but you must register to facilitate the organization of the event. You can register here.

CppCon 2025 Clean code! Horrible performance? -- Sandor Dargo

Registration is now open for CppCon 2025! The conference starts on September 13 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2025!

Clean code! Horrible performance?

Friday, September 18 14:45 - 15:45 MDT

by Sandor Dargo

Summary of the talk:

Clean code promises readability, maintainability, and clarity. But is it possible that the pursuit of clean code comes at a catastrophic cost to performance? Some sceptics argue that adhering to clean code practices means sacrificing years - if not decades - of hardware advancements. Is clean code really that expensive? Let’s explore the complex relationship between clean code and software performance. In this talk, we’ll delve into what makes software performant. We’ll demystify the effects of clean code on performance and discover what real bottlenecks are that you’ll encounter while working on enterprise software.

But what is performance, really? While many immediately think of raw runtime speed, the landscape is far more intricate. We’ll explore different facets of performance, including compile-time efficiency, memory usage, and the performance of developers themselves. However, our primary focus will be on runtime performance.

The pivotal question we aim to answer is whether sheer runtime performance always reigns supreme. Can you truly achieve a 10x scale-up by eliminating dynamic polymorphism and virtual function calls? The very idea might seem absurd, but, believe it or not, in some specialized niches, that’s part of the solution. Still, the vast majority of us don’t work in those niches. We face different challenges.

We’ll navigate through real-life examples where awful algorithms hardly mattered, where prudent database and network management became the true path to scalability. I don’t claim that writing code that’s easy to understand and modify always yields optimal performance. Yet, more often than not, performance bottlenecks and the road to performant software lie elsewhere.

Sandor is a passionate software developer focusing on reducing the maintenance costs by developing, applying and enforcing clean code standards. His other core activity is knowledge sharing both oral and written, within and outside of his employer. When not reading or writing, he spends most of his free time with his two children and his wife baking at home or travelling to new places.

CppCon 2025 Graphics Programming with SDL 3 -- Mike Shah

Registration is now open for CppCon 2025! The conference starts on September 13 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2025!

Graphics Programming with SDL 3

Friday, September 19 13:30 - 14:30 MDT

by Mike Shah

Summary of the talk:

The C++ programming language does not have a standard graphics library, However, there exists many popular graphics frameworks for cross-platform graphics. In this talk, I will provide an introduction to the Simple Directmedia Layer (SDL) library, which has at the start of 2025 released version 3. This library for several decades has been a standard in the games and graphics industry. Throughout this talk, I will show how to get started with the library, some more advanced examples (including compiling graphics applications to web), and then talk about what a standard graphics library could look like in C++, or if it is even necessary. I will also talk about the 3D GPU library in SDL3. Attendees will leave this talk ready to build multimedia / game applications and with an understanding on if SDL3 is the right tool for them.

Mike Shah is currently a teaching faculty with primary teaching interests  in computer systems, computer graphics, and game engines. Mike's research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics. Along with teaching and research work, Mike juggles occasional consulting work as a 3D Senior Graphics Engineer in C++ and producing programming content at his YouTube channel https://www.youtube.com/@MikeShah

Planning a 5th track for Meeting C++ 2025

Meeting C++ is putting together a 5th track, which will feature onsite in Berlin

Planning a 5th track for Meeting C++ 2025

by Jens Weller

From the article:

I'm working on adding a 5th Track to Meeting C++ 2025 for onsite.

Already last year I've been thinking about this, but in the end its been to expensive to do, and hence only feasible with a large increase in onsite attendees. This year I'm able to go a different route through sponsorship, and thus for onsite the cost is covered by sponsors. Which in turn then also contribute talks. I hope that most talks will be in the schedule by October, and I plan to release the first talks in September for the new track. Right now the track is not visible in the schedule, as I don't want to add an empty track. We may also stream the online track into the conference in a room.

 

CppCon 2025 The Pattern Matching We Already Have -- Braden Ganetsky

Registration is now open for CppCon 2025! The conference starts on September 13 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2025!

The Pattern Matching We Already Have

Friday, September 19 09:00 - 10:00 MDT

by Braden Ganetsky

Summary of the talk:

All the way since C++98, we have already had pattern matching in C++! It's limited to specific places, but it's there. Template argument deduction, function overload resolution, and class template specializations are all instances of pattern matching in the C++ language, dating all the way back to the original standard.

The C++11 additions to the language also require library constructs to help deal with type deduction in forwarding references, namely std::forward, among others. Even experienced C++ developers may run into unexpected situations using it, especially in newer scenarios like concepts from C++20. This talk will lay clear the rules of forwarding and std::forward, and how you can forward your arguments properly every time.

This interactive talk is a deep dive into template argument deduction, helping you to understand it at deeper level across all of C++'s lifespan. Almost all that applies in C++98 still applies today, so a foundational understanding is important. Additionally, newer language standards have introduced further wrinkles, like C++11's move semantics and variadic template parameters, as well as C++17's class template argument deduction. By the end of this talk, you will have a solid understanding of how C++ deduces the types used in your code.

Braden Ganetsky graduated from the University of Manitoba with a degree in mechanical engineering, fueled by his passion for mechanical puzzles. During his final year of school, when all classes and activities were remote, he discovered C++ and has been hooked ever since. He interned as a C++ developer, which turned into a full time job, completing a successful pivot of his career. Now he spend his nights working on fun projects like parser combinators, and getting involved in the C++ community. Since 2023, Braden sits on the ISO C++ Committee as a representative of Canada.

CppCon 2025 Using Distributed Trace for End-to-End Latency Metrics -- Kusha Maharshi

Registration is now open for CppCon 2025! The conference starts on September 13 and will be held in person in Aurora, CO. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2025!

Using Distributed Trace for End-to-End Latency Metrics

Thursday, September 18 15:15 - 16:15 MDT

by Kusha Maharshi

Summary of the talk:

In this talk, we'll delve into how we utilized distributed trace to address a prevalent need at a large technology company that serves the finance industry: timing requests from point A to point Z in a complex system, where a whole alphabet's worth of steps occur in between. We'll show how tracing, an open source telemetry standard, helped us generate insights from tracking requests in a complicated, microservices-driven architecture. We'll discuss the challenges faced and lessons learned while building a C++ solution that turns trace data into end-to-end latency metrics. We hope to inspire attendees to apply these lessons to telemetry solutions tailored to their own firms' needs.

Distributed tracing was introduced within our company before it was a stable, open standard. We saw its potential and invested in solutions that utilized its rich, cross-service information. However, existing open source or commercial products didn't fit the complexity and scale of our trace data. Our engineers, incident responders, and managers wanted end-to-end latency metrics to observe complex workflows, so we built our own solution! The resulting metrics now drive service level objectives (SLOs) that set measurable targets that define a system's quality and reliability. When these targets are not met, teams are alerted, thus driving quick remediation. Furthermore, the traces corresponding to any degradation in system health can be used to pinpoint faulty components, as well as aid in the development and testing phases when building new solutions.

From a technical point of view, trace data is represented as directed acyclic graphs (DAGs), and our challenge was processing more than 50 billion daily nodes, with deep fan-outs and fan-ins. These graphical structures mirror real-world scenarios like queuing systems for high-volume messaging, order processing or batched email notifications, and present concurrency choke points at scale. In this talk, we'll break down the design of the C++ microservices we built to process large-scale streaming graphs into metrics, while also addressing scalability bottlenecks. We'll also highlight why we chose C++ and its libraries, powerful profiling tools, and efficient data structures. If you're into building low-latency, high-throughput distributed systems, want to build telemetry solutions that best suit your needs, or just enjoy geeking over graphs, this talk is for you!

Kusha Maharshi is a Senior Software Engineer at Bloomberg, where she passionately works on distributed tracing and observability infrastructure. An avid public speaker, she loves breaking down complex technical challenges with clarity – and a dose of humor. Kusha holds a degree in Computer Science from Carnegie Mellon University, where she specialized in computer systems. Her favorite programming language? Assembly.