Loading…
arrow_back View All Dates
Monday, September 14
 

08:00 MDT

Registration
Monday September 14, 2026 08:00 - 08:30 MDT

Monday September 14, 2026 08:00 - 08:30 MDT
CppCache

08:30 MDT

Profiles for simplicity and guarantees
Monday September 14, 2026 08:30 - 10:15 MDT
The C++ community is growing fast. C++ is being used in critical applications. C++ can be used in ways that ensures correctness, simplicity, performance, and maintainability. How can we ensure that it is used is such desirable ways? How can we teach new and old C++ developers to do so?
The general strategy is called “subset of superset” and is based on the idea that by extending (“supersetting”) by adding libraries, we can simplify static analysis to where we can remove undesirable uses (“subsetting”) without damaging expressiveness or efficiency. Where run-time checks are necessary, such as to catch out-of-range accesses in hardened libraries, static analysis can be used to minimize the number of checks.
The strategy is supported by the “Profiles” framework, that allows us to require or suppress specific sets of guarantees, called profiles.
As examples, I show how to eliminate uninitialized-object errors and container-invalidation errors (a kind of dangling pointer errors) using the profiles framework and implementations of the “Initialization” and “invalidation” profiles. Both with zero run-time cost.

Presenters
avatar for Bjarne Stroustrup

Bjarne Stroustrup

Professor, Columbia University

Monday September 14, 2026 08:30 - 10:15 MDT
Colorado A

10:15 MDT

Conference Group Photo
Monday September 14, 2026 10:15 - 10:30 MDT
Follow the crowd immediately after the opening keynote to be in the conference photo. Be part of conference history!

Photo will be taken by CppCon's official conference photographer, Jonathan Phillips.
Monday September 14, 2026 10:15 - 10:30 MDT
Colorado A

11:00 MDT

Back to Basics: Move Semantics
Monday September 14, 2026 11:00 - 12:00 MDT
Move semantics and perfect forwarding, introduced in C++11, are quite impactful features that still remain a source of confusion even for some experienced developers. This talk builds understanding from the ground up: what problem move semantics solves, how rvalue references enable it, and why the rules work the way they do.

We start with the cost of unnecessary copies and how move constructors and move assignment operators let us transfer resources instead of duplicating them. We then look at how std::move doesn't actually move anything — and what it really does. From there we tackle the forwarding problem: why writing a single function that preserves the value category of its arguments is necessary, how forwarding references (also known as "universal reference" in the past) solve it, and what std::forward does under the hood.

Along the way we cover the practical details that trip people up: reference collapsing rules, the interaction between overload resolution and reference binding, when the compiler generates move operations and when it doesn't, and the cases where std::move can actually pessimize your code. We also discuss trade-offs in parameter passing — by value, by const reference, or by forwarding reference — so attendees should have a clearer model for making these decisions in their own code.

At the end we will look into std::forward_like and explore how it is different from std::forward .

No prior knowledge of rvalue references is assumed. Familiarity with copy constructors, destructors, and basic templates is helpful.

Presenters
avatar for Ruslan Arutyunyan

Ruslan Arutyunyan

Senior Middleware Development Engineer, Intel
Ruslan is a Senior Middleware Development Engineer specializing in parallel and threading runtimes. He joined Intel in 2017 and has experience in the autonomous driving domain, where he led the development of two libraries. Currently, Ruslan is the lead developer of oneAPI DPC++ library... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
Willow Lake 3/4/5

11:00 MDT

From 20 Nanoseconds to One: Optimizing Bishop, Rook, and Queen Move Generation in a Chess Engine
Monday September 14, 2026 11:00 - 12:00 MDT
A chess engine must search millions of positions per second. Move generation is often a bottleneck. Generating moves for knights, kings, and pawns are computationally cheap (~1 nanosecond). However, rooks, bishops, and queens (aka "sliding pieces") present a unique challenge: their movement depends on the placement of other pieces. This makes on-demand generation too slow (20+ nanoseconds) and naively-implemented lookup tables impractical (requiring zettabytes of RAM).

We will start by reviewing the core data structures in a chess engine and the logic behind move generation. Then, we will explore "magic bitboards", a perfect hashing technique that enables sliding piece move generation in ~1 nanosecond. We will look at how to implement this in modern C++, comparing hardware-specific instructions like PEXT (Parallel Bits Extract) against a portable software approach. Finally, we will discuss the practical challenges of generating the data structures required for magic bitboards, including the limitations of consteval and how to integrate build-time table generation into the build process using Bazel.

To ground these concepts, we will be referencing implementation details and code from my C++ chess engine, FollyChess.

Presenters
avatar for Aryan Naraghi

Aryan Naraghi

Aryan Naraghi is a Member of Technical Staff at Anthropic. Before that, he spent most of his career at Google, from 2012 to 2021 and again from 2023 to 2026, where he contributed to BigQuery, App Engine, Google Analytics, and Compute Engine; in between his two stretches at Google... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
Red Rock 6/7

11:00 MDT

Are You Smarter Than A Branch Predictor?
Monday September 14, 2026 11:00 - 12:00 MDT
Are you smarter than a branch predictor? In this interactive, game-show-themed session, the audience becomes the branch predictor: participants vote on which of two C++ snippets will run faster before we examine what actually happens on real hardware. The snippets are drawn from real-world production code, and correct answers are rewarded with unique specialty erasers (no two are the same!). Through these examples, we build a practical mental model of how modern CPUs handle control flow and why even small branching decisions can have a significant impact on performance. Using annotated assembly, performance-counter data, and cross-platform comparisons, this talk explores branch prediction, misprediction costs, indirect calls and virtual dispatch, and the trade-offs between branches and conditional moves. We examine how different compilers (GCC, Clang, and MSVC) transform code and highlight non-obvious cases where “branchless” code performs worse or behaves differently across architectures. The examples are intentionally small microbenchmarks, but each exposes patterns that appear in real-world systems when control flow becomes the bottleneck. Whether you're a systems engineer or just curious about what your branch predictor is doing behind your back, this session will give you a concrete mental model of control flow. You'll leave with the tools to profile your code, interpret assembly, and make informed decisions about when to rely on compiler heuristics versus manual optimization.

Presenters
avatar for Michelle D'Souza

Michelle D'Souza

Software Engineer, Bloomberg
Michelle Fae D’Souza is a Software Engineer at Bloomberg, where she develops C++ code for the company’s Data Licence solution, providing quantitative data for firms worldwide. She is an active member of Bloomberg's C++ Guild and is a Technical Rep at Bloomberg. Michelle holds... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
Colorado B

11:00 MDT

C++26: A Curated Tour of What's New
Monday September 14, 2026 11:00 - 12:00 MDT
The next evolution of C++ has officially arrived, bringing a massive wave of enhancements to both the core language and the Standard Library. But with hundreds of committee proposals officially baked into the standard, where do you start? Continuing the tradition from previous releases, this fast-paced session delivers a comprehensive look at the new and updated features that define C++26.

We won’t get bogged down in the minutiae of every single ISO proposal—covering everything in detail is impossible in just one hour. Instead, you'll get a high-level, curated overview of the most impactful changes, from the major game-changers down to the small quality-of-life gems. If you want to get up to speed with the new standard and see how it will shape your codebase, this session is for you.

The session will touch on the following core language and Standard Library topics.

C++26 core language changes include - Reflection - Contracts - Unnamed placeholder variables - = delete("reason"); - Pack indexing - #embed - constexpr exceptions, constexpr placement new - Variadic friends - ...

C++26 Standard Library changes include - Execution control library - New libraries such as , , , , , and more - std::inplace vector: dynamically-resizable vector with fixed capacity - std::philox engine: counter-based random number engine - std::text_encoding: text encodings identification - More constexpr for containers and container adaptors - Saturation arithmetic - New SI prefixes - Printing Blank Lines with std::println() - ...

Where applicable, I’ll point you toward other specialized CppCon sessions for those ready to dive even deeper into specific topics.

Presenters
avatar for Marc Gregoire

Marc Gregoire

Software Project Manager, Nikon Metrology
MARC GREGOIRE is a software project manager and software architect from Belgium. He graduated from the University of Leuven, Belgium, with a degree in "Burgerlijk ingenieur in de computer wetenschappen" (equivalent to a master of science in engineering in computer science). The... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
Colorado A

11:00 MDT

From Firmware to Screen: Real-Time Control, Simulation, and Visualization in C++23 With CUDA and Unreal Engine
Monday September 14, 2026 11:00 - 12:00 MDT
What does it take to build a real-time embedded control system in modern C++, simulate its environment, command it from a browser, and watch it fly in 3D — all from the same open source ecosystem? This talk follows that pipeline end-to-end: from a C++23 real-time framework that schedules deterministic control loops across POSIX hosts and bare-metal microcontrollers, to GPU-accelerated simulation with CUDA, to web-based operations and telemetry, to live 3D visualization in Unreal Engine.

Attendees will see how a unified runtime architecture can span embedded control, simulation, diagnostics, operations, and visualization without fragmenting into separate software stacks. The talk explores deterministic scheduling, zero-allocation real-time design, cross-platform deployment, and integrating CUDA compute kernels directly into scheduled control loops without blocking execution. It also covers tooling for validating deterministic real-time behavior, along with techniques for streaming telemetry and sensor data between simulation and visualization layers in real time.

The presentation includes live demonstrations of a quadcopter simulation flying a programmed trajectory with lidar feedback, and a full-fidelity aircraft simulation with closed-loop autopilot, engine dynamics, and atmospheric turbulence — both running through the same real-time framework and rendered live in Unreal Engine. Whether you build flight software, robotics systems, industrial controllers, or simulation infrastructure, this talk presents practical architectural patterns for modern real-time systems in C++ that bridge embedded devices, GPU compute, and interactive visualization.

Presenters
KG

Kevin Gomez

Flight Software Engineer, Lux Aeterna
Monday September 14, 2026 11:00 - 12:00 MDT
Red Rock 8/9

11:00 MDT

Same Bits Without Losing MIPS: Reproducible Numerics at Full Hardware Speed
Monday September 14, 2026 11:00 - 12:00 MDT
Floating point has a reputation for betrayal. Change the thread count, vector width, compiler flags, reduction tree, or target architecture, and the low bits can move. Parallel algorithms make this worse: the standard often specifies the operation, but not the numerical expression whose result must be reproduced. This talk asks a provocative question: what if reproducible numerics did not have to be slow?

We will show reproducible, deterministic implementations of reduce and scan that exhibit better error behavior on hostile floating-point workloads and can match or beat conventional standard-library implementations on realistic workloads. The trick is not to freeze the execution schedule. It is to specify the expression being computed, then let the implementation use SIMD, threading, blocking, tiling, and platform-specific strategies to compute that expression efficiently.

The key idea, developed through C++ standardization work such as P4016R0 and P4229R0, is reproducibility by reproducing the computation. Instead of asking the implementation to promise a particular schedule, we give the calculation a named expression. Once that expression is chosen, changing the thread count, vector width, chunking, or blocking strategy does not silently change the answer.

A reproducible scan makes this harder than reduce because it does not expose only one final value. It exposes every prefix. A reproducible final sum is not enough if the intermediate results still drift. We will show how expression and observation contracts make those prefixes reproducible without forcing the computation back into a slow sequential order.

Then we go below the algorithm layer, to the places where bits usually escape: FMA contraction, denormals, floating-point environment choices, math-library approximations, and vectorized transcendental functions. The goal is not to get the same answer by turning off the hardware. We will show reproducible vectorized primitives, including transcendental functions, running at speeds comparable to established vector math libraries while preserving a cross-platform numerical contract.

Finally, we put the whole stack under stress: a heterogeneous numerical pipeline across x86-64, Apple Silicon, and CUDA. The data is deliberately hostile, with high cancellation rates and fragile intermediate states. The aim is not to pass friendly benchmark cases, but to reproduce the specified computation, including the same intermediate failures, not just the same final answer, bit for bit, across CPUs, GPUs, and toolchains.

Presenters
avatar for Andrew Drakeford

Andrew Drakeford

Numerical Ghost Slayer, Determinus Labs
Andrew Drakeford has a PhD in Physics and began developing C++ applications in the early 1990s at British Telecom Laboratories. For the past two decades, he has worked in finance, building high-performance calculation libraries and trading systems in C++.His current focus is making... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
Homestead 3/4

12:30 MDT

[Open Content] C++26 Reflection on Windows with Visual Studio Code and WSL
Monday September 14, 2026 12:30 - 13:30 MDT
At the moment, two practical options for experimenting with C++26 static reflection are Bloomberg’s Clang fork and GCC 16. Getting these compilers set up on a Windows laptop can be a challenge.

In this session, I will show you how to set up WSL on Windows, install GCC 16, and configure Visual Studio Code to build and run simple C++26 static reflection examples in this environment.
Presenters
avatar for Koen Samyn

Koen Samyn

Koen is a senior software engineer and lecturer at digital art and entertainment whose primary focus is bringing modern C++ to GPU-driven game technology. Over the past decade he has built and optimized compute-shader pipelines for lighting, physics, and inverse kinematics. In the... Read More →
Monday September 14, 2026 12:30 - 13:30 MDT
Red Rock 6/7

14:00 MDT

Back to Basics: Templates
Monday September 14, 2026 14:00 - 15:00 MDT
C++ templates are one of the language’s most powerful yet often misunderstood features. This talk walks the audience through the entire template landscape, starting with the basic syntax and definition, moving through function and class templates, and culminating in advanced techniques.

Attendees will learn how template argument deduction works, why implicit requirements matter, and how function overloading can replace error-prone macro tricks. Real-world examples, including a flexible register abstraction used in production code, show how generic programming can deliver type-safe, high-performance solutions without sacrificing readability and performance (zero cost abstraction).

By the end of the session, participants will feel confident writing their own generic components, understand the trade-offs of different template features, and have a toolbox of best-practice patterns they can apply immediately to their projects.
Presenters
avatar for Laurent Carlier

Laurent Carlier

Lead embedded software engineer, Laurent Carlier Consulting
Laurent Carlier is a freelance embedded software consultant and Development Lead Embedded Software Engineer at KION, where he works on autonomous mobile robots and automated vehicles for warehouse logistics. He has over a decade of industry experience, having spent nine years at Nokia... Read More →
Monday September 14, 2026 14:00 - 15:00 MDT
Willow Lake 3/4/5

14:00 MDT

Pointers to Power: Navigating Organizational Influence
Monday September 14, 2026 14:00 - 15:00 MDT
Getting a project approved, or killed, often has less to do with technical merit than with who actually holds the keys and what they need to hear. This talk draws on real case studies from library design fights, cross-functional infrastructure rewrites, and a couple of notable failures to show practical techniques: how to find the real decision-maker, how to break expert deadlock with a position paper, and how to build toward an audacious goal through incremental wins and a well timed crisis.

Presenters
Monday September 14, 2026 14:00 - 15:00 MDT
Homestead 3/4

14:00 MDT

Beyond the Scheduler: Designing Predictable Embedded Systems in Modern C++
Monday September 14, 2026 14:00 - 15:00 MDT
Embedded systems have to operate within real limits. We care about timing, memory usage, reliability, and what happens when something fails. But storage is often treated differently. We write a file, call an API, and assume the operation will finish when it finishes. That works for a lot of systems, but it becomes harder to accept when storage is part of a real-time workload.

That led me to a fairly simple question: what would change if storage had to be predictable too?

In this talk, I'll use an embedded filesystem I built in C++20 to explore that question. We'll start with the system requirements and work our way down into the filesystem, looking at where unpredictable work can come from and what design choices can make that work easier to understand and bound.

Instead of focusing only on average execution time, we'll look at what an operation actually has to do: searching for space, accessing metadata, reading and writing blocks, handling failures, and recovering from interrupted operations. We'll also look at how those costs change as the filesystem fills up or becomes fragmented. This kind of reasoning is familiar in real-time systems—we routinely think about bounded work in schedulers, queues, synchronization, and memory management. Storage deserves the same scrutiny.

The filesystem is intentionally constrained. It uses fixed resources and bounded searches where practical, explicit ownership, and a block-device interface that keeps the filesystem separate from the underlying storage hardware. I'll also show how fault injection and instrumentation can be used to exercise failure paths and measure the work being performed instead of relying only on timing measurements.

Modern C++ is useful here, but not because using C++ automatically makes a system deterministic. It gives us tools for making some of these design decisions explicit. We'll look at std::span, std::string_view, fixed-size containers, RAII, compile-time configuration, and small abstractions that can still make sense on a resource-constrained microcontroller.

There are tradeoffs. Fixed limits give up some flexibility. Simpler allocation strategies may use storage less efficiently. Recovery requires additional work and writes. In some systems those costs are worth paying for behavior that is easier to reason about. In others, a general-purpose filesystem is the better choice. We'll look at both sides.

We'll also separate the work performed by the filesystem from the timing behavior of the storage device itself. That gives us a way to take the same filesystem design and evaluate it across different storage backends and embedded targets. Rather than asking only, “How fast did this run?”, we can start asking, “How much work did the software perform, what did the hardware contribute, and did the system behave the way we expected?”

By the end of the talk, attendees should have a practical way to think about predictable storage in embedded C++ systems and, more broadly, how to reason about resource limits, failure handling, ownership, hardware interfaces, and timing when predictability matters more than peak performance.

Presenters
avatar for Elbert Dockery

Elbert Dockery

Elbert Dockery is an engineer, worked at several small companies as well as small startups. He has experience with systems software as well as embedded systems.
Monday September 14, 2026 14:00 - 15:00 MDT
Red Rock 8/9

14:00 MDT

Component based or monolithic development for large C and C++ projects: Why not both?
Monday September 14, 2026 14:00 - 15:00 MDT
Developers of large C and C++ projects have to choose between two main development paradigms: component based development and monolith based development, each one with its own advantages and disadvantages.

In component based development, projects can be split in multiple repositories that allow to do decouple development and releasing, which suits well for many organizations that split the work in different teams with different development speeds. But this approach requires efficient dependency management, complicates working simultaneously in multiple components and it adds extra challenges to implement Continuous Integration at scale.

On the other hand, in monolithic/monorepo base development, the build system tool manages the whole project efficiently, simplifying some development and integration flows. But it can be resource-intensive on the CI side and it also push the whole organization to move at the same speed, often with little or almost no versioning: the “live at head” paradigm

It is said that by Conway's law, organizations are forced in practice to choose between them. But what if modern C and C++ tooling allowed us to have the best of both worlds?

This talk will present the novel Conan2 “Workspaces”, a monolithic view of multiple independent components that can be dynamically added and removed from the monolithic build, and how leveraging CMake FetchContent, such a single monolithic build can be implemented.

Also, for the cases where not only CMake is involved, a quick overview of the orchestration of workspace incremental builds for heterogenous build systems and CI at scale will also be introduced.

The talk will describe the basics, tools, design and architecture of the solutions, and it will also show full working demonstrations for them.

Presenters
avatar for Diego Rodriguez-Losada Gonzalez

Diego Rodriguez-Losada Gonzalez

Conan co-founder, JFrog
Diego Rodriguez-Losada‘s passions are robotics and SW engineering and development. He has developed many years in C and C++ in the Industrial, Robotics and AI fields. Diego was also a University (tenure track) professor and robotics researcher for 8 years, till 2012, when he quit... Read More →
Monday September 14, 2026 14:00 - 15:00 MDT
Red Rock 6/7

14:00 MDT

Towards a complete contract-assertion facility for C++
Monday September 14, 2026 14:00 - 15:00 MDT
C++26 introduces contract assertions: language-level constructs for expressing expectations about program correctness, optionally checking them at runtime, and configuring how violations are handled. However, what ships in C++26 is intentionally minimal — not the final destination, but a carefully designed foundation for a much more capable facility.

In this talk, we begin with a brief overview of contract assertions as they exist in C++26, including the three kinds of assertions ( pre , post , and contract_assert ), the four evaluation semantics ( ignore , observe , enforce , and quick-enforce ), and the user-replaceable contract-violation handler. The focus of the talk, however, is the next stage of evolution already underway.

We will explore the major extensions currently planned for C++29 and beyond, and the problems they are intended to address, and how they build upon the extensibility intentionally designed into the C++26 facility. Many of the concerns raised during standardisation — particularly around scalability, configurability, and expressiveness — are already being addressed by these extensions. We will discuss contract assertions on virtual functions; grouping contract assertions and configuring evaluation semantics by group; constraining evaluation semantics (for example, assertions that must always or never be enforced); postconditions that refer to earlier program state; user-defined diagnostic messages; and finally, compiler-generated, implicit contract assertions guarding against core-language undefined behavior. We then look even further ahead at more ambitious ideas still in earlier stages of exploration: class invariants, contracts on function pointers, and procedural interfaces.

Rather than just listing the proposed extensions, we will examine the design considerations behind them and show how the new functionality fits into the broader model of contract assertions in C++. What does it mean for contracts to participate in virtual dispatch? When can contract assertions support optimisation? How can evaluation semantics remain both predictable and configurable across large codebases? Understanding these questions is essential to understanding where contract assertions in C++ are heading next.

This talk is intended for anyone interested not only in how contract assertions work in C++, but also in the principles shaping their future evolution — and what a complete contract facility for C++ might ultimately look like.

Presenters
avatar for Timur Doumler

Timur Doumler

Senior Software Engineer, Citadel Securities
Timur Doumler is a software engineer specialising in low-latency and real-time C++. He works at Citadel Securities and is an active member of the ISO C++ standard committee, where he has (co-)authored many successful proposals including [[assume]], std::inplace_vector, and contract... Read More →
Monday September 14, 2026 14:00 - 15:00 MDT
Colorado B

14:00 MDT

Familiar C++ Patterns That Fail at Scale and the Design Shifts That Prevent Them
Monday September 14, 2026 14:00 - 15:00 MDT
Some of the most expensive C++ bugs are not caused by obscure language features. Instead, they emerge from code that looks reasonable: shared ownership that quietly extends lifetimes, singletons that become invisible dependencies, and performance-driven decisions that harden into architecture.

This talk examines these common design-level failure patterns in large-scale C++ systems. We cover three concrete design shifts:

Lifetimes: Shifting from shared ownership to explicit lifetime boundaries. Coupling: Shifting from implicit global coupling to injected dependencies. Interfaces: Replacing permissive APIs with constrained interfaces using std::span, std::optional, std::variant, and strong types.

Each shift is presented with the failure pattern it addresses, the solution, and the design rule it yields. Attendees will leave with practical heuristics for designing systems that are easier to reason about, test, and evolve: all grounded in real-world failures and the redesigns that fixed them.

Presenters
avatar for Divya Chandrasekar

Divya Chandrasekar

Software Engineering Team Lead, Bloomberg
Divya Chandrasekar is an Engineering Leader at Bloomberg, where she leads FXGO Orders, a trading platform within FXGO. She holds a master’s degree in Computer Engineering from the University of Florida and has held multiple engineering roles at Bloomberg. With a strong technical... Read More →
avatar for Devpriya Dave

Devpriya Dave

Devpriya Dave is a software engineer on the FX Options team at Bloomberg. While at Georgia Tech obtaining her master's degree, she helped design and build the system behind Georgia Tech's Machine Learning for Trading online course. She is passionate about STEM mentorship and is always... Read More →
Monday September 14, 2026 14:00 - 15:00 MDT
Colorado A

15:15 MDT

Back to Basics: Code Analysis
Monday September 14, 2026 15:15 - 16:15 MDT
In the C++ ecosystem, we have powerful tools for understanding our programs before, during, and after they run. But compiler warnings, clang-tidy, cppcheck, sanitizers, debuggers, profilers, and coverage tools all answer different questions, and using them well starts with knowing which question you are asking.

This talk introduces code analysis from first principles. We will compare static techniques such as compiler diagnostics, linting, and include analysis with runtime techniques such as sanitizers, coverage instrumentation, and profiling. We will also briefly connect these tools to the direction of modern C++, including C++26 contracts and standard library hardening, where some assumptions that used to live only in comments, documentation, or debug modes become part of the program's checkable structure. Through small C++ examples, we will see what each category of tool can reveal, what it cannot prove, and how the tools complement each other.

Attendees will leave with a practical mental model for choosing the right analysis tool for the task at hand, interpreting its output, introducing analysis into an existing C++ codebase, and writing code that is easier for both humans and tools to understand.

Presenters
avatar for Alexsandro Thomas

Alexsandro Thomas

Senior Software Engineer
Alexsandro Thomas is a Senior Software Engineer, and a member of the ISO C++ Standard Committee. He specializes in C++ API development, build systems, and developer tooling. His interests include heterogeneous computing, compiler technology, and languages.
Monday September 14, 2026 15:15 - 16:15 MDT
Red Rock 6/7

15:15 MDT

The journey to "/W4 /WX": How hard could it be?
Monday September 14, 2026 15:15 - 16:15 MDT
Building on the recent work of improving the quality of Sea of Thieves' codebase by upgrading from C++14 to C++20, this talk will focus on the work that has went into enabling warnings as errors on the game, and more.

Rare will discuss the motivations behind wanting to crank up the warning level, and to flick the "warnings as errors" switch after 10 years of development in their multi-million line Unreal Engine code base.

What were the challenges? How much effort did it take? Was it worth it? Did we find any bugs? Did we stop at just "/W4 /WX"? What warnings did we find the most useful? What warnings were deemed unhelpful? All of these questions and probably more will be answered throughout this session.

Presenters
avatar for Keith Stockdale

Keith Stockdale

Senior Software Engineer, Rare Ltd
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... Read More →
Monday September 14, 2026 15:15 - 16:15 MDT
Red Rock 8/9

15:15 MDT

std::simd Without Compromise: SIMD in C++26 and Beyond, as Fast as Silicon Allows
Monday September 14, 2026 15:15 - 16:15 MDT
For thirty years, SIMD has been the preserve of experts. Writing the fastest C++ has meant hand-written intrinsics, locking code to one architecture, and parallel implementations maintained across every instruction set you ship to. Auto-vectorization can help, but optimizers may give up in complex scenarios where iteration independence isn't obvious. C++26 changes that by putting SIMD in the hands of every C++ programmer, bringing portable, expressive data parallelism into the standard library.

For the engineers who have spent decades writing intrinsics in telecoms, finance, HPC, and embedded systems, migration to std::simd is only worthwhile if it preserves the performance they have fought to achieve. Every cycle counts when code runs tens of thousands of times per second, for years on end, and a portable abstraction that costs ten percent is not a win. The bar for adoption is therefore high: the abstraction must be measurably cheap, the generated code must match hand-written intrinsics, and the tricks and techniques those engineers rely on must all be expressible in the library, not lost in translation.

This talk takes the practitioner's view, aimed squarely at the engineers who write real intrinsics code today and need to know whether std::simd can replace it. It starts with what modern SIMD hardware actually offers, grounding std::simd in real silicon. It then works through the main features of C++26's std::simd with worked examples drawn from the patterns that recur in production intrinsics code, accessible to programmers new to the library and detailed enough for intrinsics veterans to map against their own kernels with all their accumulated tricks and techniques. A look under the hood at our implementation shows how careful API design and aggressive use of hardware features make the abstraction as cheap as the target architecture allows, and how the library fills the gaps on weaker targets with implementations that an expert library author can write once on behalf of every user. The talk closes with a preview of the C++29 proposals being written now to close the remaining gaps, so that std::simd becomes a clear win even for the most performance-critical code.

Presenters
avatar for Ruslan Arutyunyan

Ruslan Arutyunyan

Senior Middleware Development Engineer, Intel
Ruslan is a Senior Middleware Development Engineer specializing in parallel and threading runtimes. He joined Intel in 2017 and has experience in the autonomous driving domain, where he led the development of two libraries. Currently, Ruslan is the lead developer of oneAPI DPC++ library... Read More →
avatar for Daniel Towner

Daniel Towner

Principal Software Engineer, Intel
Dr Daniel Towner is a Principal Systems Engineer at Intel, where he has spent the last two decades helping telecoms software extract every last cycle from modern hardware. With 25 years in the industry behind him, including 12 years as a GCC port maintainer, he now splits his time... Read More →
Monday September 14, 2026 15:15 - 16:15 MDT
Colorado B

15:15 MDT

The Latency Slippage: Understanding the Hidden Costs of Caching for Low Latency C++
Monday September 14, 2026 15:15 - 16:15 MDT
Choosing cache-friendly data structures is a well-known optimization, but it's rarely the whole story. This talk goes deeper, exploring the hardware mechanics that dictate real-world performance and showing where significant gains are still left on the table.

We'll start from the ground up: what actually happens inside the cache hierarchy when your code issues a memory read or a software prefetch? Understanding the hardware lets us answer, when you should prefetch manually, and when you should trust the hardware prefetcher.

From there, we'll examine the invisible cost of multi-core C++. Cache coherency protocols (MESI/MOESI) can silently degrade performance through false sharing, RFO stalls, and coherency storms. We'll walk through how to diagnose these issues using hardware performance counters and how to eliminate them.

Additionally, we will contrast these behaviors across the data cache (DCache) and instruction cache (ICache), and analyze how Translation Lookaside Buffers (TLBs) impact overall memory read latency.

Finally, we'll tie it all together by combining hardware insight with application profiling data to arrive at practical strategies for low latency C++, packaged as an application-aware memory allocator.

Presenters
avatar for Sanchit Gupta

Sanchit Gupta

Low Latency C++ Developer, Graviton Research Capital
Sanchit Gupta graduated from Indian Institute of Technology, Madras with Honours in Bachelors of Technology in Computer Science and Engineering. Since graduating, Sanchit has worked for Graviton as a Low latency Software Developer
Monday September 14, 2026 15:15 - 16:15 MDT
Colorado A

15:15 MDT

Capability Routing Grid: From Decoupled Plugins to the Hardware Ceiling
Monday September 14, 2026 15:15 - 16:15 MDT
For C++ developers building modular applications or performance-critical loops, modern architecture often forces a painful compromise: you either build heavily decoupled systems that thrash the CPU cache, or you write rigid, tightly coupled code. Distributed builds mask the compile-time symptom — but the underlying coupling bleeds into the runtime hot path.

This talk presents the Capability Routing Grid (CRG), an architecture that refuses this compromise. CRG enables a zero-registry plugin system where modules self-register at link time, and polymorphic dispatch is reduced to an O(1) branchless array lookup — with no central registry, no Init() function, and no runtime search.

Three independent pillars, each usable standalone:

Pillar 1 — Linker-Driven Discovery: Build a fully decoupled plugin system without central registries or Init() boilerplate. Modules self-register via standard C++ static initialization — entirely automatic in monolithic builds, and requiring a single explicit sync-point call at DLL load time.

Pillar 2 — State and Behavior Separation: Enforce a strict architectural boundary between pure data structs and stateless capability objects. This separation — not a framework — is what keeps the hot path flat. Type erasure is available as an optional cold-path utility for cross-boundary routing, but is never required for performance.

Pillar 3 — O(1) Branchless Dispatch: Map multi-dimensional contextual states into a single flat lookup table using basic polynomial math. Because this layout never changes, the CPU branch predictor and hardware prefetcher maintain peak efficiency.

The final payoff: by collapsing capabilities into raw function pointers, the system hits the memory bandwidth ceiling — 33 GiB/s sustained throughput, with a per-dispatch tax of approximately 1.5 nanoseconds.

Data-Oriented Design is defined from scratch. A brief hardware cache primer precedes every performance claim. The entire architecture compiles on C++17 — no language extensions, no experimental flags, on any mainstream toolchain. The audience will leave thinking, "I could have written this" — because they can.

Attendees will learn how to: - Build self-registering plugins with zero shared headers, using standard static initialization across both monolithic and DLL builds - Apply state/behavior separation as an architectural discipline — keeping capabilities stateless and the hot path free of virtual overhead - Replace vtable dispatch with a flat array lookup across N behavioral dimensions — O(1) regardless of dimensionality - Cache resolved logic as raw function pointers and call them directly, reaching memory-bound throughput

Presenters
avatar for Cyril TISSIER

Cyril TISSIER

Programming Architect, Ubisoft
Cyril Tissier is a Tech Lead at Ubisoft. Having joined the Montreuil studio in January 2014, he moved to the Annecy team in 2021. As a metaprogramming expert and the creator of an internal Advanced C++ training program, his primary goal has always been straightforward: to make the... Read More →
Monday September 14, 2026 15:15 - 16:15 MDT
Homestead 3/4

15:15 MDT

Catching Leaks: How to stop a C++ program at the exact instruction that leaks memory
Monday September 14, 2026 15:15 - 16:15 MDT
Memory leaks are very hard to treat. We have reliable tools like valgrind or AddressSanitizer to tell us whether or not an application has leaked memory, but current tools cannot tell us where the leak happens (they can tell us where the allocation happened,which is not the same).

I show that it is possible to run an analysis that is equivalent to running a garbage detection pass after every instruction and use that to find the actual cause of memory leaks in open source applications.

Using a garbage detection algorithm on record-and-replay recording, one can overcome the most obvious obstacle: stopping a program a program after every instruction or running garbage detection algorithms is very slow, but we can effectively run a bisection search on the recorded timeline to avoid having to evaluate after every instruction.

The goal is attribution to source code. Are we limited to reporting the instruction that overwrites the last reference to allocated memory or can we actually diagnose a specific error for a concrete function?

Tooling Track sessions are sponsored by Optiver.
Presenters
HM

Henning Meyer

Henning is a C++ software developer with ten years of experience ranging from small start-ups to large enterprises. He has PhD in Mathematics from the University from Kaiserslautern and is currently working on new debugging tools for C++.
Monday September 14, 2026 15:15 - 16:15 MDT
Willow Lake 3/4/5

16:45 MDT

Back to Basics: const, constexpr, consteval
Monday September 14, 2026 16:45 - 17:45 MDT
const is one of the oldest and most widely used features in C++, yet many developers still struggle with the subtle differences between const , constant expressions, constexpr , and consteval .

In this talk, you will learn how compile-time constants evolved in modern C++, starting with const and continuing through the features introduced since C++11. You will see what constant evaluation really means, what the compiler is allowed to execute during compilation, and where the limits still are today.

Using practical examples, we will explore when const is enough, when constexpr is needed, and how compile-time and runtime execution interact in modern C++. We will also look at common pitfalls, surprising behavior, and cases where compile-time programming can either improve code or make it harder to understand.

Finally, you will see how features such as consteval and std::is_constant_evaluated influence correctness, testing, and maintainability.

By the end of this talk, you will have a deeper understanding of constant evaluation and know how to use modern compile-time features more effectively in your code.

Presenters
avatar for Andreas Fertig

Andreas Fertig

C++ Trainer & Consultant
Andreas Fertig is an expert C++ trainer and consultant who delivers engaging and impactful training sessions, both on-site and remotely, to teams around the globe. As an active member of the C++ standardization committee, Andreas contributes directly to shaping the future of the language... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
Colorado A

16:45 MDT

AEMBER: Modern Embedded C++ Without the Chaos
Monday September 14, 2026 16:45 - 17:45 MDT
Building embedded systems wastes time on infrastructure instead of features. Before running application logic, developers lose hours bootstrapping init systems, wiring services, debugging startup failures, and fighting tooling never designed for constrained or early-boot environments. AEMBER is a developer-first PID1 (init system) that eliminates this overhead by providing a modern C++ runtime for process supervision, container orchestration, and service management - letting you focus on your application, not your plumbing.

This talk demonstrates how C++23 enables robust embedded systems without sacrificing performance. We'll explore std::expected for exception-free error handling, if consteval for compile-time optimization paths, and deducing this for zero-overhead policy classes. You'll see how monadic operations compose system calls into clean pipelines, and how modern C++ features build type-safe APIs for namespaces, cgroups, and process management.

Starting from main(), we'll trace AEMBER's architecture: how components compose, how errors propagate through std::expected chains, and how C++23 patterns enable embedded systems to be both safe and fast. We'll wrap up with a live demo showing AEMBER managing containers and services in real-time. You'll leave with concrete techniques for building maintainable embedded infrastructure using cutting-edge C++.

Presenters
avatar for Arian Ajdari

Arian Ajdari

Software Engineer, Bertrandt GmbH
Arian Ajdari is a Software Engineer working on cutting-edge applications in the field of smart home appliances. His daily work includes discussions with clients, gathering requirements, building use-cases and implementing different solutions using C++. Arian possesses a deep understanding... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
Homestead 3/4

16:45 MDT

Zero Cost Scripting Languages for Game Engines With C++26 Static Reflection
Monday September 14, 2026 16:45 - 17:45 MDT
Scripting in a C++ game engine should not cost you the engine's native performance. This talk shows how C++26 static reflection and std::meta::substitute in particular can lift a scripting language's bytecode into C++ template structures that the compiler optimizes away entirely, collapsing the interpreter dispatch loop into the same machine code you'd write by hand. Scripting languages like AngelScript and Lua are invaluable in C++ engines: they give designers a fast iteration loop without rebuilding the engine. But they come with a paradox. The engine you chose for raw performance now spends cycles on every frame interpreting a slower language, juggling a software stack and checking types at runtime. We will walk through the technique step by step, starting from a plain bytecode interpreter and ending at a fully reflected program where a scripted sum(0..10) compiles to mov eax, 45; ret. Along the way you'll learn the core C++26 reflection primitives (^^, [: :], std::meta::substitute), how to assemble bytecode into structural templates like block<> and loop<>, and how these techniques generalize to embedding any stack or register based scripting language in your engine with zero runtime overhead.

Presenters
avatar for Koen Samyn

Koen Samyn

Koen is a senior software engineer and lecturer at digital art and entertainment whose primary focus is bringing modern C++ to GPU-driven game technology. Over the past decade he has built and optimized compute-shader pipelines for lighting, physics, and inverse kinematics. In the... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
Willow Lake 3/4/5

16:45 MDT

C++ in the Age of AI: How Visual Studio Is Evolving
Monday September 14, 2026 16:45 - 17:45 MDT
For almost 30 years, Visual Studio has been a core part of the C++ developer's toolkit on Windows. This year, we're building on that foundation with investments across three themes: making the IDE faster and more responsive for large codebases, advancing compiler conformance and runtime performance, and integrating AI-powered workflows that help you debug, refactor, and optimize more effectively. Beyond the IDE, we'll show you how AI-powered command-line tools can become a natural part of your development process. This session combines demos and practical guidance so you can get the most out of these tools right away. Come with curiosity, leave with new techniques you can apply immediately.

Presenters
avatar for David Li

David Li

Game Developer Product Manager, Microsoft
David Li is the Game Developer Product Manager at Visual Studio with 12 years of experience in the software industry. As a gamer himself, David is especially passionate about enhancing game developer productivity through improving tooling for Visual Studio. In his free time, he enjoys... Read More →
avatar for Augustin Popa

Augustin Popa

Senior Product Manager, Microsoft
I am a product manager on the Microsoft C++ team, working on the Visual Studio IDE and vcpkg, the C/C++ package manager.
Monday September 14, 2026 16:45 - 17:45 MDT
Red Rock 6/7

16:45 MDT

Why Great C++ Libraries Fail (And How to Fix That)
Monday September 14, 2026 16:45 - 17:45 MDT
You found the perfect C++ library. But you cannot integrate it with your CMake build without reading three pages of bespoke instructions. The documentation (if any) is a Doxygen-generated API dump. You file a bug, get "read the source," and move on. You never adopted it—and you had every intention of doing so.

Or you are the author of that library. Technically brilliant. Six months after release: three users, no contributors, two support tickets, you are not sure how to answer. Drawing on years of experience as both a maintainer of mp-units — a high-visibility, standards-track C++ library — and as a developer who regularly evaluates and contributes to third-party C++ projects, I have watched this pattern repeat across dozens of technically excellent libraries. The barriers that drive users away, frustrate potential contributors, and quietly kill great projects are predictable. More importantly, they are fixable.

This talk traces the five stages every C++ library must survive — Discovery, Evaluation, Integration, Contribution, and Community — and examines the concrete engineering decisions at each. We will look at how naming, README structure, and CI signals communicate trust to a user who found you three seconds ago; how a properly fuzzed build matrix gives users real confidence across their compiler, their C++ standard, and their platform; how DevContainers and Compiler Explorer eliminate the local setup barrier for both users and contributors; how the Diátaxis framework turns a documentation site from a reference graveyard into a system that serves newcomers, practitioners, and design-curious contributors; and how to craft an AI contribution policy that manages the rising volume of LLM-generated PRs without sacrificing the architectural integrity that makes a library worth contributing to in the first place.

Whether you are a user evaluating libraries, a developer looking for a C++ project worth your time, or an author trying to build one, you will leave with a concrete, field-tested checklist.

Presenters
avatar for Mateusz Pusz

Mateusz Pusz

C++ Trainer, Train IT
Mateusz Pusz is a C++ architect and voting member of the ISO C++ Committee (WG21), with 100% meeting attendance since 2017. As an active contributor to Library Evolution, he originated variable template template parameters (P2008, now part of C++26), co-authored heterogeneous lookup... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
Colorado B

16:45 MDT

Works on My Machine, Works in CI: Treating Your Build Toolchain as a Dependency
Monday September 14, 2026 16:45 - 17:45 MDT
Modern C++ development has embraced package managers like Conan and vcpkg for dependency management, gaining reproducibility and productivity. However, a significant weak point remains: the build toolchain. Unlike standard dependencies, the disparate set of tools comprising the compiler, linker, standard libraries, and OS-specific headers often remains outside this managed ecosystem. This gap leads to frequent complications, where misaligned versions between local environments and CI cause build errors and subtle ABI incompatibilities.

The operational cost of maintaining these toolchains is high. Updating a compiler version often necessitates the creation and deployment of new VM images or manual infrastructure updates, a process that can be even more complex if specialized environments like CUDA are involved. These hurdles directly impact engineering productivity and organizational alignment. Docker is a popular solution to isolate toolchains, but it does not support all the mainstream platforms.

This talk proposes a shift in perspective: treating the build toolchain as just another dependency. We will explore how leveraging toolchain isolation allows developers to express specific toolchain versions within their project manifests—using cross-platform tools like Conan and vcpkg to ensure strict repeatability across local developer environments and CI machines.By automating the fetching and configuration of the entire compiler suite, teams can ensure perfect alignment across all environments, simplify the upgrade path, and ultimately boost engineering velocity.

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Luis Caro Campos

Luis Caro Campos

JFrog
Luis is a Electronics and Computer Engineer based in the UK, with previous experience as a C++ engineer in the field of Computer Vision and Robotics. With a passion to enable C++ engineers to develop at scale following modern DevOps practices. He is currently part of the Conan team... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
Red Rock 8/9

19:00 MDT

HRT Happy Hour
Monday September 14, 2026 19:00 - 22:00 MDT
Join the Hudson River Trading team for a networking social to unwind, connect, and continue the conversations of CppCon 2026.

Enjoy complimentary cocktails and bites.
Connect with HRT recruiters and members of our technical teams.
Discover the exciting work we’re doing at the intersection of software engineering and finance.

As a CppCon sponsor, we’re excited to host this event to learn more about you! Space is limited, so please RSVP. All are invited, but those who RSVP in advance will enjoy expedited entry. 
Monday September 14, 2026 19:00 - 22:00 MDT
Mountain Pass Sports Bar

20:30 MDT

Committee Fireside Chat
Monday September 14, 2026 20:30 - 22:00 MDT

Moderators
avatar for Herb Sutter

Herb Sutter

Technical fellow, Citadel Securities

Presenters
avatar for Andrei Alexandrescu

Andrei Alexandrescu

Principal Research Scientist, NVIDIA
Andrei Alexandrescu is a Principal Research Scientist at NVIDIA. He wrote three best-selling books on programming (Modern C++ Design, C++ Coding Standards, and The D Programming Language) and numerous articles and papers on wide-ranging topics from programming to language design to... Read More →
avatar for Bjarne Stroustrup

Bjarne Stroustrup

Professor, Columbia University

avatar for Braden Ganetsky

Braden Ganetsky

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... Read More →
avatar for Gabriel Dos Reis

Gabriel Dos Reis

Principal Software Engineer, Microsoft
Dr. Gabriel Dos Reis is an Architect for Visual Studio at Microsoft, working in the area of large scale software construction, neurosymbolic tools and techniques.  His contributions to C++ include scalable generic programming, pioneering compile-time computation, language support... Read More →
avatar for Guy Davidson

Guy Davidson

Head of Engineering, Six Impossible Things Before Breakfast
Guy Davidson is the convenor of the C++ Standards Committee.

He is also the Head of Engineering at Six Impossible Things Before Breakfast. Before that, he was the Head of Engineering Practice at Creative Assembly, one of the UK's oldest and largest game development studios.

Guy sta... Read More →
avatar for Jeff Garland

Jeff Garland

CrystalClear Software
Jeff Garland has worked on many large-scale, distributed software projects over the past 30+ years. The systems span many different domains including telephone switching, industrial process control, satellite ground control, ip-based communications, and financial systems. He has written... Read More →
avatar for Nina Ranns

Nina Ranns

The Standard C++ Foundation
Nina Dinka Ranns is a C++ consultant and a long-time member of the ISO C++ standardization committee, where she has contributed since 2013. She currently serves as ISO C++ committee vice convener and as a director of the Standard C++ Foundation.

Throughout her career, she has worked on systems ranging from telecommunications infrastructure to cloud-based security products. As a consultant, she has collaborated with Edison Design Group, Qt Group, Bloomberg, and the C++ Alliance on compiler technology, library design, and the... Read More →
avatar for Ruslan Arutyunyan

Ruslan Arutyunyan

Senior Middleware Development Engineer, Intel
Ruslan is a Senior Middleware Development Engineer specializing in parallel and threading runtimes. He joined Intel in 2017 and has experience in the autonomous driving domain, where he led the development of two libraries. Currently, Ruslan is the lead developer of oneAPI DPC++ library... Read More →
avatar for Timur Doumler

Timur Doumler

Senior Software Engineer, Citadel Securities
Timur Doumler is a software engineer specialising in low-latency and real-time C++. He works at Citadel Securities and is an active member of the ISO C++ standard committee, where he has (co-)authored many successful proposals including [[assume]], std::inplace_vector, and contract... Read More →
Monday September 14, 2026 20:30 - 22:00 MDT
Colorado A
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.
Filtered by Date -