Loading…
Venue: Red Rock 6/7 clear filter
Monday, September 14
 

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

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

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

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

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
 
Tuesday, September 15
 

08:00 MDT

[Open Content] Tower Research Capital - Ask Me Anything (AMA)
Tuesday September 15, 2026 08:00 - 08:45 MDT
Tower Research Capital hosts a dynamic, Reddit-style "Ask Me Anything" session at CppCon featuring Justin Zaglio, Principal Software Engineer, Risk Limits, and Vincent Marsicano, Global Head of Technology Talent Acquisition at Tower that puts the spotlight on real-world applications of C++ in one of the most demanding environments: global quantitative trading. The 45-minute session will open with a brief look at how Tower leverages C++ to power its high-performance trading infrastructure, before turning the floor over to attendees for an open Q&A.
Presenters
JZ

Justin Zaglio

Principal Software Engineer, Tower Research Capital
Justin is a Principal Software Engineer at Tower, where he works on risk-related infrastructure and quantitative tooling.  Prior to Tower he spent (a long) time at Morgan Stanley and JP Morgan running front-office risk systems for various Fixed Income desks.  He has degrees in Computer... Read More →
VM

Vincent Marsicano

Global Head of Technology Talent Acquisition, Tower Research Capital

Tuesday September 15, 2026 08:00 - 08:45 MDT
Red Rock 6/7

09:00 MDT

Can I memcpy This Type Across a Boundary? Verifying Object Representation at Compile Time With C++26 Reflection
Tuesday September 15, 2026 09:00 - 10:00 MDT
Native C++ types often become the format for bytes that cross a boundary: shared-memory IPC, plugin interfaces, persistent storage, or software built for more than one ABI. At that point the type is no longer just an implementation detail; it is part of a binary contract. trivially_copyable , sizeof , and code review help, but they do not answer the two questions that matter: may this type be transported as bytes at all, and do all supported ABIs give it the same object representation?

C++26 reflection can derive that evidence from the type itself. The technique builds a compile-time layout signature from ordinary C++ types, without IDL, generated stubs, or runtime inspection. The signature records the representation facts needed for byte transfer: architecture and endianness, leaf type tokens, sizes, alignments, absolute offsets, bit-fields, and pointer-like markers. It deliberately leaves out field names and source-level meaning.

With those signatures in hand, the build can enforce a gate for memcpy-style transfer. You name the boundary types and supported ABIs. Each target exports signatures, and a verification build permits direct byte transfer only when the type is byte-copy safe and the signature matches across the set. We'll walk through the workflow with static_assert checks and CI diagnostics: a fixed-width type that passes, a pointer-containing type rejected by admission, and a platform-divergent type rejected by signature comparison. The claim is intentionally narrow: representation compatibility, not semantic compatibility or schema evolution.

Presenters
avatar for Fanchen Su

Fanchen Su

Tech Lead, NetEase Games
Fanchen Su is a game research & development expert and team leader. He has over 20 years of experience in designing, writing, and maintaining C++ code. His main areas of interest and expertise are modern C++, code performance, low latency, and maintainability. He graduated from Wuhan... Read More →
Tuesday September 15, 2026 09:00 - 10:00 MDT
Red Rock 6/7

12:30 MDT

[Open Content] The Death of Flow? How AI Changed Programming — and How to Get Joy Back
Tuesday September 15, 2026 12:30 - 13:30 MDT
AI is changing how we code — we prompt more, type less, and review instead of create. Productivity may be up, but many developers feel the loss of flow, reduced ownership, and a sense that the craft is slipping away.

What if we're looking for joy in the wrong place?

This talk explores how AI reshapes the experience of programming. We'll revisit what made it fulfilling — solving problems, reducing complexity, exercising judgment — and build a new mental model where clarity and taste matter more than typing.

AI changed the craft's shape, not its soul.
Presenters
avatar for Sandor Dargo

Sandor Dargo

Software Developer, Spotify
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... Read More →
Tuesday September 15, 2026 12:30 - 13:30 MDT
Red Rock 6/7

14:00 MDT

Inside a Small Game Engine: An Architecture Tour in Modern C++
Tuesday September 15, 2026 14:00 - 15:00 MDT
According to VGInsights, about 10% of games released on Steam in 2024 used a custom engine, but those games represent 41% of units sold. Most "how an engine works" talks come from the AAA end of that distribution. This one comes from the other end of that distribution: a teaching-scale engine, where every system has to be small enough to understand from first principles. The problems are the same as in a big engine, but the smaller surface is what makes the architecture legible.

In this talk, we'll walk the spine of the engine in modern C++: allocators and handles in the core, the job system, the graphics abstraction question, the asset pipeline split between pipeline-time and runtime, and scene representation including ECS. We finish on serialization, where C++26 reflection (P2996) offers a path past today's reliance on macros and external code generators.

Presenters
avatar for Elias Farhan

Elias Farhan

Head of Department, SAE Institute Geneva
Elias Farhan is the head of the Games Programming department at SAE Institute Genève, as well as co-founder of indie game studio Team KwaKwa.
Tuesday September 15, 2026 14:00 - 15:00 MDT
Red Rock 6/7

15:15 MDT

Hacking and Securing C++
Tuesday September 15, 2026 15:15 - 16:15 MDT
This session dives deep into the world of vulnerabilities from a C++ developer's perspective. Using a simple embedded device as the playground, where the memory model is stripped to the bare essentials, attendees will explore how classic attacks like buffer overflows can be used to hijack control flow, inject code, and manipulate the stack.

Everyone has heard the warnings about buffer overflows, use-after-free, memory corruption, and other infamous vulnerabilities lurking in low-level code. But many developers accept that these traps should be avoided without truly understanding how the exploits work. In this talk, attendees will see hands-on examples of how memory vulnerabilities arise, how they’re exploited, and why they’re dangerous.

But this session is not just about breaking things, it is about building them right. We will explore how modern C++ techniques like smart pointers, bounded containers, and RAII can prevent these issues altogether. By the end of the talk, developers will not only understand the risks but feel confident applying C++ best practices to write safer, more robust code.

Whether you are a systems programmer, embedded developer, or security-minded engineer, this session will deepen your understanding of C++, not just as a powerful language, but as a tool for writing secure, reliable software.

Presenters
avatar for Marcell Juhasz

Marcell Juhasz

Embedded Software Developer, Zühlke Group
Marcell Juhasz is a systems software engineer at Zühlke Engineering, specializing in high-performance C++ and low-level software development, with a growing focus on embedded cybersecurity. His work focuses on building efficient, reliable systems that operate close to the hardware... Read More →
Tuesday September 15, 2026 15:15 - 16:15 MDT
Red Rock 6/7

16:45 MDT

Back to Basics: std::unordered_map
Tuesday September 15, 2026 16:45 - 17:45 MDT
In modern C++, std::unordered_map is the de facto #2 container. Its dominance signifies a fundamental shift in application design: the performance-critical need for O(1) average-case key-value lookups.

Join as we move beyond "just use a hash map" and explore the critical, real-world implications of this choice. We'll start by benchmarking the classic std::map (red-black tree) against std::unordered_map (hash table) to understand exactly what you gain-and what you might lose.

However this power comes with risks. An average-case O(1) can quickly degrade to a catastrophic O(n) without warning. We will profile and dissect the actual costs of using a hash map:

  • The Hash: What makes a good hash function? We'll go beyond std::hash and see how to write effective, fast hashers.
  • The Collision: How do different collision-handling strategies impact performance and memory?
  • The Re-hash: What is "load factor," and when does the hidden cost of a full table re-hash destroy your performance gains?
We'll conclude with a practical decision-making framework for when to choose std::unordered_map , when to fall back on the ordered std::map , and how std::string -the container we often forget is a container-fits into this modern landscape.

You will leave this session knowing precisely which data structure to deploy for maximum performance.

Presenters
avatar for Kevin Carpenter

Kevin Carpenter

Software Engineering Manager, EPX
Kevin Carpenter, an experienced Software Engineer, excels in crafting high-availability C++ solutions for Linux and Windows, with expertise in transaction software, financial modelling, and system integration. As a Software Engineering Manager, he ensures secure, high-speed credit... Read More →
Tuesday September 15, 2026 16:45 - 17:45 MDT
Red Rock 6/7

18:30 MDT

[Open Content] One C++26 App Three Ways: By Hand, By AI, and Together
Tuesday September 15, 2026 18:30 - 20:00 MDT
AI coding demos almost always use well-understood applications with canonical architectures. What happens when you build a one-of-a-kind C++26 application instead of another TypeScript web app?
I’ll use detailed metrics to compare the same application built three ways:
  1. Manually with the latest C++26 features
  2. Vibe coding it with the latest AI
  3. In collaboration with AI
The code, the experience, and the outcomes differ in surprising ways, pointing to new best practices for AI-assisted C++ and beyond.

Presenters
avatar for Mike Spertus

Mike Spertus

Chief Product Officer, Kodamai
Mike Spertus is Chief Product Officer at Kodamai, a company applying category theory and formal methods to AI Governance. He also teaches Advanced C++, Generative AI, and Big Data at the University of Chicago, and was a long-time member of the C++ standards committee. Previous roles... Read More →
Tuesday September 15, 2026 18:30 - 20:00 MDT
Red Rock 6/7
 
Wednesday, September 16
 

09:00 MDT

CUDA Tile C++: Practical Automatic Parallelization for the GPU
Wednesday September 16, 2026 09:00 - 10:00 MDT
CUDA Tile C++ is a novel C++ DSL and compiler that automatically parallelizes array operations across GPU threads while presenting a single logical thread to the programmer. In CUDA Tile C++, parallelism is expressed through SIMD-style operations on arrays of data called "tiles" while memory accesses are written using structured memory abstractions. The compiler analyzes the tile and memory operations to generate an equivalent multi-threaded program that leverages the advanced hardware capabilities of modern GPUs. This allows the user to write simple programs that exploit GPU parallelism without needing to manage low level hardware concurrency.

As GPU architectures evolve to meet the demands of high performance computing, the traditional multi-threaded GPU programming model becomes increasingly unwieldy. To achieve optimal performance, the GPU programmer must manage a growing variety of hardware features including shared memory, Tensor Memory Accelerators, and Tensor Cores. Traditional CUDA code is deeply coupled to the underlying hardware resulting in complex and non-portable algorithms. The CUDA Tile C++ compiler removes the need for coordinating these low level hardware details, freeing the user to reason about their algorithm rather than asynchronous code.

The tile programming model introduces three key abstractions:

  • cuda::tiles::tile - a multi-dimensional array with value semantics whose operations are parallelized across the GPU
  • cuda::tiles::tensor_span - a view into a multi-dimensional in-memory array with an interface similar to std::mdspan
  • Tile Views - adapters that present a uniform "chunking" of a tensor_span which gives the compiler visibility into memory access patterns
In this talk, we will explore how these abstractions allow NVIDIA's Tile C++ compiler to schedule the program across hardware threads all while preserving the illusion of a single-threaded abstract machine to the user.

Presenters
avatar for Ezra Stein

Ezra Stein

Senior Compiler Engineer, NVIDIA
Ezra Stein is a Senior Compiler Engineer working on NVIDIA's CUDA C++ Frontend team. Since joining the company in 2025, Ezra has focused primarily on the design and implementation of CUDA Tile C++. Prior to working at NVIDIA, Ezra spent 5 years developing MATLAB to C++ source-to-source... Read More →
Wednesday September 16, 2026 09:00 - 10:00 MDT
Red Rock 6/7

12:30 MDT

[Open Content] C++23: Ask Me Anything and Book Signing
Wednesday September 16, 2026 12:30 - 13:30 MDT
C++23 is the latest evolution in modern C++ programming that is now fully supported by the latest versions of GCC, Clang, and Visual C++.

As the first release after introducing several new key features with C++20, which can be seen as the beginning of a new release cycle, it contains both significant extensions and improvement of various features introduced with C++20 and a couple of new language and library features.

In my new book "C++23 - The Complete Guide", I cover all aspects of tis release.

This session gives you the opportunity to talk with me about C++23 and discuss various aspects of in in general or a bit in detail.
Presenters
avatar for Nicolai Josuttis

Nicolai Josuttis

Author and Teacher
I teach and teach and teach and teach C++. For centuries. Still learning this language. However in principle, C++ is no longer teachable...
Wednesday September 16, 2026 12:30 - 13:30 MDT
Red Rock 6/7

14:00 MDT

The Ghost in the Heap: Defeating a Memory Thief
Wednesday September 16, 2026 14:00 - 15:00 MDT
In the C++ world, it is often assumed that proper object lifetime management ensures a memory footprint that scales with an application’s actual needs. However, long-running systems are frequently sabotaged by heap pinning: a phenomenon in which Resident Set Size (RSS) refuses to shrink even after significant deallocations. This results in a critical, 'invisible' overhead that defies standard leak-detection tools and can lead to system thrashing and even Out Of Memory (OOM) kills.

Heap pinning occurs when long-lived allocations are interleaved with transient ones, creating a structural barrier that prevents the underlying allocator from releasing memory back to the system. A single persistent allocation can 'pin' an entire block of physical memory, forcing the OS to keep it mapped even if the surrounding space is empty. Consequently, the process footprint reflects historical peak usage rather than the current live state.

In this talk, we will bridge the disconnect between C++ deallocations and physical memory reclamation. You will learn to use allocator-aware objects and std::pmr resources to eliminate pinning by strategically segregating allocations based on their expected lifetimes. We will also demonstrate how to diagnose these 'ghost' overheads when traditional heap profilers fall short. You’ll leave the session equipped to identify and resolve these fragmentation traps, ensuring your application’s memory footprint finally stays proportional to its actual state.

Presenters
avatar for Nicolas Arroyo

Nicolas Arroyo

Software Architect, Bloomberg
Nicolas Arroyo has spent two decades crafting C++ in high-stakes environments, spanning VoIP, embedded systems, distributed systems, and low-latency financial infrastructure. Currently, he specializes in building performance-analysis tooling, system-level benchmarking, and eliminating... Read More →
Wednesday September 16, 2026 14:00 - 15:00 MDT
Red Rock 6/7

15:15 MDT

You Shall Not Pass*!
Wednesday September 16, 2026 15:15 - 16:15 MDT
Sean Parent's "no raw pointers" guideline is often misunderstood as "avoid T* , use smart pointers instead", even though Sean explicitly included smart pointers in his definition of a raw pointer: "anything with implied ownership and reference semantics".

This talk presents a refinement of that guideline:

Pointers - smart or not - shall not appear in function signatures, neither as argument nor as return type.

The focus of this talk is how to implement classes as regular types while still supporting dynamic allocation, polymorphism, and sharing internally.

It shows how such value types can be implemented manually, without dedicated library support. It then follows the evolution of the language and library in gradually simplifying these abstractions: C++11 smart pointers ( unique_ptr and shared_ptr ), C++26 vocabulary types ( indirect and polymorphic ), as well as in-progress proposals ( copy_on_write and protocol ) are presented as tools to simplify writing safe abstractions, not as safe abstractions themselves.

Along the way, the talk revisits the Rules of 3/5/0, exception safety guidelines, const propagation, aliasing, and local reasoning.

The talk aims to make you stop passing pointers around.

Presenters
avatar for Daniel Pfeifer

Daniel Pfeifer

Senior Software Engineer
Wednesday September 16, 2026 15:15 - 16:15 MDT
Red Rock 6/7

16:45 MDT

My DAG Ate All My Cores: Identifying and Resolving Build Graph Bottlenecks
Wednesday September 16, 2026 16:45 - 17:45 MDT
Every C++ developer runs their build system dozens of times a day, yet few think about what it actually computes. Underneath every cmake --build or ninja invocation lies a directed acyclic graph, a DAG of dependencies that determines what gets rebuilt, in what order, and how much parallelism is available. When builds are slow, when incremental rebuilds trigger more work than expected, or when CI bottlenecks in surprising places, the root cause is almost always a structural property of this graph. Most developers never look at it.

This talk makes the build graph visible and actionable. Through curated examples, we will visualize dependency graphs and expose the common pathologies: overly connected "hub" headers that invalidate half the build when touched, deep critical paths that starve parallelism even on a 128-core machine, and accidental edges introduced by includes that no one questioned. These are not just build performance issues: they are architectural issues wearing a different hat. Your build graph is the ground truth of your codebase's structure, whether or not it matches the diagram in your team's documentation.

Armed with this mental model, we will walk through practical techniques for reshaping the graph: measuring critical path length from .ninja_log , identifying high-fan-in nodes, breaking costly edges with forward declarations and interface segregation, and using graph analysis as an automated architectural fitness function in CI. Worked examples will show concrete before-and-after measurements. You will leave with a new way of seeing your codebase, not as files in folders, but as a graph you can visualize, measure, and deliberately reshape.

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Florent Castelli

Florent Castelli

Software Engineer, EngFlow
Wednesday September 16, 2026 16:45 - 17:45 MDT
Red Rock 6/7
 
Thursday, September 17
 

09:00 MDT

Beyond Monads: Pattern Matching Alternatives for Result Types
Thursday September 17, 2026 09:00 - 10:00 MDT
In C++, monadic operations are a commonly utilized API for interacting with result types like std::optional and std::expected. By chaining the computations, these abstractions allow you to manipulate the underlying values using less boilerplate code. Monadic operations are a powerful tool suitable for a variety of usage scenarios. They enhance code robustness and significantly lower the risk of accidental errors.

Despite its benefits, many users consider the syntax of monadic operations to be overly verbose, and the underlying concept often seems complicated. There are also the cases where the restrictions placed on functions require using extra statements, specific return and arguments types, and reduce code readability. However, are there other options available? Do we have promising alternatives? The short answer is: yes. While C++ does not yet include pattern matching as a native language feature, the standard library still offers tools for achieving many useful pattern-matching-like functionalities. We will explore how to apply std::visit to this problem and evaluate if an abstraction, which we might call std::match, could serve as an effective substitute for monadic operations in various situations.

Based on several years of practical production experience, this talk will explore the use of monadic result type interfaces and comparable alternatives. This information will benefit practicing software engineers looking to deepen their understanding of these features and integrate them into their codebases.

Presenters
avatar for Vitaly Fanaskov

Vitaly Fanaskov

Principal Software Engineer, reMarkable
Vitaly Fanaskov is a Principal Software Engineer at reMarkable. He has been designing and developing software using C++ and some other languages for over a decade. Primary areas of interest are design and development of frameworks and libraries, modern programming languages, and functional... Read More →
Thursday September 17, 2026 09:00 - 10:00 MDT
Red Rock 6/7

12:30 MDT

[Open Content ] The Barrier Is a Myth: Becoming a Boost Maintainer
Thursday September 17, 2026 12:30 - 13:30 MDT

Becoming a Boost maintainer makes you a stronger C++ engineer than any day job can. You work across the whole language, C++03 through C++26, mentored by the experts who wrote the libraries the standard borrowed from. Your name ends up on software that outlives the role you did it for, in a community small enough to be known in.

The barrier is far lower than people think. This talk answers the two questions every contributor quietly asks.

Can I actually do this? We'll walk the contribution surface from the shallow end (CI, issue triage) to the deep end of new features and tricky bugs.

What will slow me down? A candid tour of the Boost idioms that look strange on day one and make sense by day three.

Grounding it is my firsthand account of modernizing the Boost Graph Library as an outsider. You'll leave with a realistic picture of maintainership and a first task you could pick up this week. Start your journey to fame, writing code that gets used by millions, lives in billions of devices, and travels the world and space.

Presenters
AB

Arnaud Becheler

Software Engineer, The C++ Alliance
Thursday September 17, 2026 12:30 - 13:30 MDT
Red Rock 6/7

14:00 MDT

Back to Basics: Containers 1/2
Thursday September 17, 2026 14:00 - 15:00 MDT
Choosing the right Standard Library container and using it correctly can have a profound impact on the performance of a program, but what may appear to be the obvious choice can turn out to be the wrong one. In this two-part series we will explore the abstractions each container models and the practical limitations it imposes. We will see that choosing between them requires an understanding not only of the speed and size tradeoffs of each container, but also of the difference between algorithmic complexity and actual behavior. Our goal will be to learn how to choose the right tool for the job and extract the best performance from it.

In Part 1 we will survey the containers and adaptors in the classic STL, including the additions introduced in C++11. Along the way we will investigate some premises underlying the original C++98 STL design that often lead to the wrong choice today.

In Part 2 we will examine a C++17 improvement to the associative containers and the powerful new containers and adaptors that C++23 and C++26 provide. We will finish with a discussion of a proposed future container that deliberately diverges from the original STL design principles while addressing several limitations of the current sequence containers.

Presenters
avatar for Alan Talbot

Alan Talbot

Founder & Principal Consultant, Graphire Consulting
Alan Talbot is a software architect and engineer specializing in C++. He began his career as a pioneer in professional music notation software and later built engineering platforms for GIS map creation and railroad simulation. He has been a C++ programmer since 1990 and an active... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Red Rock 6/7

15:15 MDT

Back to Basics: Containers 2/2
Thursday September 17, 2026 15:15 - 16:15 MDT
Choosing the right Standard Library container and using it correctly can have a profound impact on the performance of a program, but what may appear to be the obvious choice can turn out to be the wrong one. In this two-part series we will explore the abstractions each container models and the practical limitations it imposes. We will see that choosing between them requires an understanding not only of the speed and size tradeoffs of each container, but also of the difference between algorithmic complexity and actual behavior. Our goal will be to learn how to choose the right tool for the job and extract the best performance from it.

In Part 1 we will survey the containers and adaptors in the classic STL, including the additions introduced in C++11. Along the way we will investigate some premises underlying the original C++98 STL design that often lead to the wrong choice today.

In Part 2 we will examine a C++17 improvement to the associative containers and the powerful new containers and adaptors that C++23 and C++26 provide. We will finish with a discussion of a proposed future container that deliberately diverges from the original STL design principles while addressing several limitations of the current sequence containers.

Presenters
avatar for Alan Talbot

Alan Talbot

Founder & Principal Consultant, Graphire Consulting
Alan Talbot is a software architect and engineer specializing in C++. He began his career as a pioneer in professional music notation software and later built engineering platforms for GIS map creation and railroad simulation. He has been a C++ programmer since 1990 and an active... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
Red Rock 6/7

16:45 MDT

A Duck Does More Than Quack: Synthesizing VTables with C++26 Reflection
Thursday September 17, 2026 16:45 - 17:45 MDT
C++26 reflection was designed so that it could open doors that have been shut since the creation of the language. One of the most firmly bolted doors — type erasure — can be broken down by pushing our new code generation capabilities to their limit. Introducing duck, an open-source library built to harness this new power.

So far, reflection gives us just one function to generate code: define aggregate, which lets you build a simple type. duck uses define aggregate to generate a vtable, transforming a tool for building simple types into one that builds interfaces. You declare an interface as an ordinary struct of C++ function declarations. Plug any type that already has those functions into duck, and you can dynamically call it with plain duck.quack() syntax — no inheritance, adapters, or macros required. This means you can avoid handwriting simply to connect other pieces of code. State what a capability means, and everything you already own that does it is compatible — your types, a vendor's, generated ones, a fifteen-year-old module nobody wants to reopen.

Through this talk, you will learn the basics of code generation with reflection, grounded entirely in real stories from duck's implementation. We'll look at where existing approaches struggle, how duck solves these historic problems, and the central technique: using define_aggregate to both synthesize a vtable and simulate member function call syntax.

We'll end by looking at the future of type erasure: the C++29 proposal for std::protocol, how token injection can perfect the implementation of duck, and how you can help push the frontier of reflection.

Presenters
RK

Ryan Keane

Ryan Keane is a second-year computer science student at Rensselaer Polytechnic Institute and the creator of duck, a C++ reflection library for non-intrusive interfaces. After writing a blog post about the library's internals, he was invited to speak at CppCon and is now collaborating... Read More →
Thursday September 17, 2026 16:45 - 17:45 MDT
Red Rock 6/7
 
Friday, September 18
 

09:00 MDT

CMake: Making Hard Things Easy
Friday September 18, 2026 09:00 - 10:00 MDT
Modern C++ development involves much more than compiling source files. Cross-platform builds, dependency management, C++ modules, package metadata, SBOM generation, CI infrastructure, and distributed builds have all increased the complexity of software engineering over the last two decades.

CMake has evolved alongside those challenges.

This talk explores how modern CMake helps make difficult software-engineering problems more manageable through targets, dependency modeling, metadata generation, debugging tools, and scalable build orchestration.

We will examine how CMake supports C++20 modules, including dynamic dependency scanning, build graph updates, and import std.

We will also look at CPS and SBOM generation together: CPS provides machine-readable package metadata, while SBOM support helps CMake expose software supply-chain information from the dependency graph.

Next, we will discuss debugging CMake itself using the CMake debugger protocol, and debugging builds using the CMake Instrumentation API to understand where time is spent during configuration and build execution.

Finally, we will examine distributed execution and build acceleration, exploring options available to CMake users in both open-source and commercial environments.

Along the way, we will discuss the real-world challenges, trade-offs, and lessons learned from evolving a long-lived build system to meet the demands of modern C++ development.

This is not your mother’s CMake.

Presenters
avatar for Bill Hoffman

Bill Hoffman

CTO, Kitware
Mr. Hoffman is a founder of Kitware and currently serves as CTO. He is the original author and lead architect of CMake, an open source, cross-platform build and configuration tool that is used by hundreds of projects around the world. Using his 20+ years of experience with large software... Read More →
Friday September 18, 2026 09:00 - 10:00 MDT
Red Rock 6/7

10:30 MDT

Senders, Receivers, and Robots: Structured Concurrency for Autonomous Navigation
Friday September 18, 2026 10:30 - 11:30 MDT
To navigate safely, a robot must simultaneously ingest high-frequency sensor data, compute complex spatial algorithms, and publish control commands. Historically, frameworks like ROS 2 have handled this via asynchronous callbacks. However, as autonomous stacks scale, relying heavily on unstructured callbacks can obscure control flow, making state synchronization difficult and robust task cancellation notoriously complex.

This talk explores how to transform unstructured, callback-based architectures in a robotics navigation stack into declarative pipelines using structured concurrency (specifically, C++ Senders and Receivers via stdexec). Attendees will dive into two real-world architectural examples: a collision monitor and a waypoint follower, showcasing readable logic pipelines, thread-hopping between an event loop and a static thread pool, and clean task cancellation.

Presenters
avatar for Nahuel Espinosa

Nahuel Espinosa

Software Engineer, Ekumen
Nahuel Espinosa graduated as an Electronics Engineer from UTN (National Technological University) in Buenos Aires. Since graduation, Nahuel has worked with a variety of systems and technologies: - Robotics applications (e.g., localization algorithms based on particle filters, rigid-body... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Red Rock 6/7

12:00 MDT

[Open Content] Refactoring C++ : Techniques, Smells, and Discussion
Friday September 18, 2026 12:00 - 13:00 MDT
Martin Fowler's Classic book "Refactoring" presents a list of refactorings (72 in his first edition, 61 in his second, "lots" on his website) and common "Code Smells".  These are not language specific, but are very "OO Design Patterns" flavored and are less applicable to C++ than we'd like.

This hour-long session will start with a ~30 minute overview of some C++ specific code smells and refactorings, and then move to an open Q&A discussion format.  Examples will include:
  • Declaring all variables at the top of a function (holdover from K&R C and Fortran)
  • Nesting all a function's business logic in conditionals in order to have all code paths share the final return statement ("Single Exit is Obsolete")
  • Dynamically allocating objects when we don't need to ("Don't make so much garbage")
This session is "adjacent" to my talk "Refactoring Techniques and Strategies (A Tale in Three Acts)" but doesn't rely on that material; and is accessible to all developers.
Presenters
avatar for Dave Steffen

Dave Steffen

Principal Software Engineer, SciTec Inc
Dave Steffen completed his Ph.D. in theoretical physics at Colorado State University in 2003, and promptly changed course for a career in software engineering. He has worked primarily in defence and aerospace, and is currently a technical lead at SciTec Inc.'s Boulder office. For... Read More →
Friday September 18, 2026 12:00 - 13:00 MDT
Red Rock 6/7

13:30 MDT

The Real Story of C++26: Beyond the Headline Features
Friday September 18, 2026 13:30 - 14:30 MDT
C++26 is often defined by its headline features — reflection, contracts, and senders/receivers. But those don’t tell the whole story.

In this talk, we’ll look beyond the headlines to explore the changes that more accurately reflect where C++ is heading. While less visible, these features address long-standing pain points, improve consistency, and quietly reshape everyday programming in C++.

We'll examine the continued expansion of constexpr, including the ability to throw exceptions at compile time, and what it means for the boundary between compile-time and runtime. We'll also discuss the evolving model of erroneous behavior and indeterminate values, making it more explicit what constitutes incorrect code — and how implementations can reason about it.

Safety is also becoming a stronger focus in the standard library. With the introduction of library hardening, C++26 takes steps toward making incorrect usage easier to detect and harder to ignore, without sacrificing performance.

Along the way, we'll look at improvements to function wrappers with std::function_ref and std::copyable_function , enhancements to structured bindings, and the growing capabilities of std::format . We'll also cover pack indexing and its impact on template expressiveness, as well as the ongoing expansion of the freestanding library.

Rather than focusing on individual features in isolation, this talk connects them into a broader narrative: the real direction of C++26 — toward greater clarity, expressiveness, and safety in everyday code.

Presenters
avatar for Sandor Dargo

Sandor Dargo

Software Developer, Spotify
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... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
Red Rock 6/7

14:45 MDT

The Value of Idiomatic Code
Friday September 18, 2026 14:45 - 15:45 MDT
Many of the problems you encounter in C++ have already been solved, just not by anyone you talk to regularly. Idioms encode best practices into recognizable patterns that help reduce cognitive load, convey intent, and eliminate entire categories of bugs. However, C++ isn’t a single community. It is a language spoken across many industries, including, but not limited to: scientific computing, games, embedded systems, and finance. Each of these domains has developed its own idioms, patterns that are shaped by the specific constraints they face.

While our vernacular evolves independently, the problems they solve often overlap. Consider the convergence around the Curiously Recurring Template Pattern (CRTP) and variant-based dispatch. Embedded systems engineers, working without a heap, paired CRTP with tagged unions to achieve polymorphic behavior over a closed set of types in static storage. Independent of this, high frequency trading firms, driven by latency rather than memory constraints, adopted the same combination to avoid indirect branches and allocator contention. Two communities, two different constraints, but the same pattern. Unfortunately, since each community was solving the problem in isolation, it had to be discovered twice.

This is not a new phenomenon. C++ idioms have been crossing boundaries since at least Coplien’s 1992 work on advanced programming styles. Data-oriented design is making a similar journey today, moving from game engines, where cache-friendly layouts are basically required, to financial systems, where the same CPU architecture imposes the same penalties.

Like a spoken language, C++ evolves not just through formal specification but through usage. New idioms emerge as communities discover better ways to express intent with new or existing features. They grow and spread via conferences, open source libraries, and cross-industry hiring. The C++ Core Guidelines capture some of this evolution, but much of it lives within codebases and communities that you may never find if you don’t look.

This is a call to look for them. We will trace how specific idioms have traveled between industries, examine what made them transferable, and argue that the next improvement to your codebase may already exist, written in a usage of C++ you haven’t learned about yet. While you are at this conference, attend the talks from industries other than your own. You may find a solution in a session that you may otherwise skip.

Presenters
avatar for John Pavan

John Pavan

Team Lead, Bloomberg LP
John Pavan is an Engineering Team Lead at Bloomberg. He has been developing software for more than 25 years. His primary interests are in distributed systems, such as service-oriented and microservice architectures, and he has most recently been writing software using C++ and Python... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Red Rock 6/7
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.