2012=

CppCon 2025 Missing Step: Making Data Oriented Design One Million Times Faster -- Andrew Drakeford

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 Missing Step: Making Data Oriented Design One Million Times Faster

Tuesday, September 16 09:00 - 10:00 MDT

by Andrew Drakeford

Summary of the talk:

Data-oriented design (DOD) has gained traction for its practical approach to solving real-world problems. Refactoring data into an Entity-Component format sets the stage for cleaner, more efficient implementations, where lambdas process ranges and SIMD operations exploit the power of contiguous data layouts. DOD is widely recognised for addressing hardware-related performance challenges, but where do these challenges originate? The engineers behind our hardware platforms didn’t design performance bottlenecks; they created performance opportunities. By engineering how our code interacts with hardware, we can unlock these opportunities and achieve substantial speed-ups. The key lies in understanding and exploiting the state of the system. From the instruction cache and registers to the L1 cache and memory access patterns, the processor's statefulness plays a crucial role in performance. Writing "hardware-friendly" code is fundamentally about aligning with this state. But hardware is only part of the equation. What about the statefulness of our software? By carefully engineering the sequence of operations and algorithms to align with both hardware and software states, we can achieve unparalleled optimization. This is the missing step. Engaging with the design problem in full can be very difficult. We leverage George Polya’s problem-solving process and heuristics to guide our approach. This presentation explores these principles through real-world examples in machine learning and mathematical finance, demonstrating how addressing both sides of the problem can improve performance by orders of magnitude. (Yes, even six orders of magnitude.) Attendees will leave with insights into the exploration process and actionable techniques that might lead to achieving similar gains in their own work. It has been noted that some attendees might start drawing more diagrams when problem-solving and have an overwhelming urge to get Polya’s book.


Andrew Drakeford A Physics PhD who started developing C++ applications in the early 90s at British Telecom labs. For the last two decades, he has worked in finance developing efficient calculation libraries and trading systems in C++. His current focus is on making quant libraries more ecologically sound. He is a member of the BSI C++ panel.

Reflecting JSON into C++ Objects -- Barry Revzin

C++26 marks a transformative milestone with the adoption of full compile-time reflection, enabling powerful new metaprogramming capabilities. In this post, we’ll explore how reflection lets you turn a JSON file directly into a fully-typed C++ object — all at compile time.

Reflecting JSON into C++ Objects

by Barry Revzin

From the article:

Last week, C++26 was finalized in Sofia, Bulgaria — and C++26 will include all of the reflection papers that we were pushing for:

  1. P2996R13: Reflection for C++26
  2. P3394R4: Annotations for Reflection
  3. P3293R3: Splicing a Base Class Subobject
  4. P3491R3define_static_{string,object,array}
  5. P1306R5: Expansion Statements
  6. P3096R12: Function Parameter Reflection in Reflection for C++26
  7. P3560R2: Error Handling in Reflection

Those are in the order in which they were adopted, not in the order of their impact (otherwise splicing base classes would go last). This is a pretty incredible achievement that couldn’t have happened without lots of people’s work, but no one person is more responsible for Reflection in C++26 than Dan Katz.

So today I wanted to talk about a very cool example that Dan put together on the flight home from Sofia, while I was unconscious a few seats over: the ability to, at compile time, ingest a JSON file and turn it into a C++ object. That is, given a file test.json that looks like this:

{ "outer": "text", 
"inner": { "field": "yes", "number": 2996 } 
} 

We can write this:

constexpr const char data[] = { 
     #embed "test.json" 
     , 0 

}; constexpr auto v = json_to_object<data>;

CppCon 2025 What's New for VS Code: Perf., Debugging, & GitHub Copilot Agents -- Alexandra Kemper

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!

What's New for Visual Studio Code: Performance, Debugging, & GitHub Copilot Agents

Tuesday, September 16 09:00 - 10:00 MDT

by Alexandra Kemper

Summary of the talk:

Join us for a deep dive into the latest advancements for C++ in Visual Studio Code, designed to help modern C++ developers tackle real-world challenges with a faster, smarter, and more customizable development environment. In this talk, we’ll showcase updates to the C++ extension, featuring several performance improvements and new LLDB debugging capabilities that will streamline the process of identifying and resolving issues in your code. We’ll also explore updates to the CMake Tools extension, including new CMake language services that are now available in-house to provide rich language support for CMake files. Additionally, discover how GitHub Copilot support for C++ developers has evolved in the last year, including the new Agent mode that can help you with complex, multi-step coding tasks such as modernizing your C++ repo. Whether you are maintaining legacy code or building for the future with C++, Copilot can help you write, build, and refactor your C++ code to streamline your development experience – all within VS Code.


Alexandra Kemper graduated from the University of Virginia with a BS in Computer Science. She works at Microsoft as the PM of the C++ Extension.

CppCon 2025 Type Traits without Compiler Instrinsics: Promise of Static Reflection -- Andrei Zissu

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!

Type Traits without Compiler Instrinsics - The Promise of Static Reflection

Monday, September 15 14:00 - 15:00 MDT

by Andrei Zissu

Summary of the talk:

Type traits are a powerful feature of C++ that allows programmers to query and manipulate the properties of types at compile time. They are widely used in generic programming and metaprogramming to enable static polymorphism, type-based dispatching, and compile-time optimization. However, not all type traits can be implemented using the C++ language alone. Some type traits, such as std::is_class, require special support from the compiler in the form of compiler intrinsics or built-ins. These intrinsics are non-portable functions or variables that are recognized and handled by the compiler directly, rather than being defined in a library.

In this talk, we will have a quick overview of the current state of type traits and of static reflection in C++. We will then see how these two worlds can join forces to give us a superior portable product, which no longer requires the use of compiler intrinsics. We will conclude by discussing a possible future where compiler and library are not necessarily mutually dependent, affording any C++ project greater freedom of choice.


Andrei Zissu is a veteran cross-industry C++ developer, notably having worked on low-level reverse engineering systems employing API hooking, DLL injection and other advanced techniques. He has been a member of the WG21 C++ Standards Committee since early 2022, and as such is actively involved in the contracts study group (SG21) and is also keeping a keen eye on reflection work in SG7. He is currently employed as Windows Tech Lead at Morphisec, a revolutionary Israeli cybersecurity company.

Discover C++26’s Compile-Time Reflection -- Daniel Lemire

Capture-decran-le-2025-06-21-a-21.55.10-825x510.pngC++26 is bringing a long-awaited feature to the language: compile-time reflection, enabling programs to introspect and manipulate their own structure during compilation. This powerful capability opens the door to eliminating boilerplate, improving performance, and writing more expressive, reusable code with ease.

Discover C++26’s Compile-Time Reflection

by Daniel Lemire

From the article:

Herb Sutter just announced that the verdict is in: C++26, the next version of C++, will include compile-time reflection.

Reflection in programming languages means that you have access the code’s own structure. For example, you can take a class, and enumerate its methods. For example, you could receive a class, check whether it contains a method that returns a string, call this method and get the string. Most programming languages have some form of reflection. For example, the good old Java does have complete reflection support.

However, C++ is getting compile-time reflection. It is an important development.

I announced a few months ago that thanks to joint work with Francisco Geiman Thiesen, the performance-oriented JSON library simdjson would support compile-time reflection as soon as mainstream compilers support it.

CppCon 2025 Building Robust Inter-Process Queues in C++ -- Jody Hagins

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!

Building Robust Inter-Process Queues in C++

Monday, September 15 14:00 - 15:00 MDT

by Jody Hagins

Summary of the talk:

This talk will offer design and implementation details of a queue intended to be used between multiple processes.

The C++ standard was written with a single-process worldview, mentioning processes only once—in a note stating that lock-free atomic operations work across process boundaries. This has led to widespread but incorrect advice about using std::atomic in shared memory. When moving queue implementations from threads to processes, seemingly rock-solid code can induce undefined behavior.

In addition, traditional queue interfaces are fundamentally insufficient for cross-process communication. A properly designed inter-process queue API must enforce role separation, ensuring that a process can only perform operations appropriate to its designated role. For example, a producer process should not be able to consume messages or manage the queue itself, and the API should prevent multiple processes from accidentally assuming the same role in a single-producer design.

By the end of this talk, you will understand the fundamental differences between thread process synchronization, how to design proper interfaces for interprocess queues that enforce correct usage across process boundaries, and practical techniques to ensure your cross-process code works reliably in production environments.

Oh yeah, and you will have a full implementation that you can use and improve upon.


Jody Hagins has been using C++ for the better part of four decades. He remains amazed at how much he does not know after all those years. He has spent most of that time designing and building systems in C++, for use in the high frequency trading space.

Explore the Doom C Codebase in VS Code | Learn to Navigate C and C++ Code on Linux -- Greg Law

How do you quickly explore an unfamiliar C or C++ codebase? We'll use Doom as an example to demonstrate how to navigate an unfamiliar codebase.

Explore the Doom C Codebase in VS Code | Learn to Navigate Complex C and C++ Code on Linux

by Greg Law

From the description:

Using the classic Doom C program on Linux as our real-world example, we trace the exact moment a zombie is killed and backtrack through the codebase to understand how it happened [..] using Undo’s Time Travel Debugging technology.

CppCon 2025 How C++26 Changes the Way We Write Code -- Timur Doumler

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!

How C++26 Changes the Way We Write Code

Monday, September 15 11:00 - 120:00 MDT

by Timur Doumler

Summary of the talk:

After the release of C++20, with groundbreaking new features like coroutines, concepts, ranges, and modules, and the more modest feature set of C++23, the upcoming C++26 Standard is shaping up to be another major milestone.

Trivial relocation evolves move semantics to the next level to unlock significant new performance benefits; contract assertions introduce portable, scalable, and configurable correctness checks for identifying program defects and making C++ code safer; and the new execution control library provides a powerful generic framework that redefines how to do asynchronous programming in C++. Finally, the most eagerly anticipated feature of C++26 — reflection — will profoundly reshape how we reason about C++ and what we can accomplish with it.

This talk is the latest installment in a popular series of talks about how each new C++ Standard changes the way we write code — from everyday idioms to advanced patterns — with a practical focus on what matters most to real-world developers. This is not a firehose talk that tries to cram as many additions to the latest Standard as possible into one hour. Instead, we focus deliberately on just a handful of particularly impactful features and highlight the essential parts that every C++ developer needs to know.


Timur Doumler is the co-host of CppCast and an active member of the ISO C++ standard committee, where he is currently co-chair of SG21, the Contracts study group. Timur started his journey into C++ in computational astrophysics, where he was working on cosmological simulations. He then moved into the audio and music technology industry, where he has been working for over a decade and co-founded the music tech startup Cradle. In the past, Timur also worked for JetBrains, first as a developer on CLion's C++ parser and later as a Developer Advocate for C++ developer tools. Currently, Timur lives in Finland, where he is organising the monthly C++ Helsinki meetup. Timur is passionate about clean code, good tools, low latency, and the evolution of the C++ language.

Variadic Class Template Arguments -- Sandor Dargo

SANDOR_DARGO_ROUND.JPGVariadic templates are a powerful C++ feature that allow template classes or functions to accept an arbitrary number of parameters. In this article, we’ll explore how to combine them with class templates and examine the various ways the parameter pack can be expanded.

Variadic Class Template Arguments

by Sandor Dargo

From the article:

Let’s talk about class templates and variadic parameters. How to use them in combination?

But first of all, what are variadic templates?

Variadic template don’t accept a fixed size of parameters, but anything from one to more. The set of parameters is called the parameter pack.

In the template parameter list, we can see the three dots (...) signaling the pack after the typename or class keywords, or after the constraints. Then later in the function / constructor parameter list, you can observe it right after the actual type name, and finally once the pack is expanded, it comes after the packed variable name.

Variadic arguments can be used in so many different ways both with function and class templates. Today, we are focusing on class templates.

When you are using variadic templates with class templates, the expansion can happen at different places. You might expand the parameter pack

  • within the constructor or any other member function
  • when declaring a member variable
  • at the inheritance list
  • in a using declaration
  • in friend declarations

 

CppCon 2025 Cutting C++ Exception Time by 93.4% -- Khalil Estell

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!

Cutting C++ Exception Time by 93.4%

Monday, September 15 11:00 - 12:00 MDT

by Khalil Estell

Summary of the talk:

Have you ever been "nerd sniped"? When I realized that exceptions are capable of reducing binaries sizes, it felt like the only thing standing in the way of its adoption was its performance concerns. I couldn't let it go. I wanted to see how far the algorithm could be pushed. In 2024, I set out to just that: making C++ exceptions blazingly fast for embedded platforms. A year later, I've achieved a +90% performance improvement for ARM microcontrollers.

This talk takes you behind the scenes of this journey. I'll share the complete roadmap—from initial benchmarking to optimization—revealing techniques applicable to any performance-critical C++ system. But this isn't just a technical story; it's a testament to the power of community collaboration and how the C++ community summoned this talk. Even if you've sworn off exceptions forever, this talk still delivers value. It's a course in performance optimization which applies across the entire C++ ecosystem.

Join me for a deep dive into what happens when obsession meets optimization—and discover just how fast C++ can really be. Whether you're writing embedded firmware, high-frequency trading systems, a game, or a web server in C++ you'll walk away with techniques to dramatically improve your code.

You'll discover:

  1. Building precise measurement frameworks for cpu cycle improvements
  2. Navigating and modernizing a 25-year-old codebase
  3. Demystifying and eliminating the actual sources of non-determinism
  4. Leveraging community expertise to shape product requirements
  5. Using data-oriented design to convert O(log(n)) operations to O(1)
  6. Working within fixed ABI constraints without compromising performance
  7. Exploring the future landscape of C++ exception handling


Khalil is a ISO C++ Committee Member and has extensive experience writing production firmware.