Loading…
arrow_back View All Dates
Thursday, September 17
 

09:00 MDT

Tying up Loose Threads: Making Your Project No-GIL Ready
Thursday September 17, 2026 09:00 - 09:30 MDT
Python's Global Interpreter Lock, which determines which single thread can execute native Python code and call C API functions, simplifies writing multithreaded code. By default, the most popular C++ bindings to this API, pybind11 and Cython, implicitly enables the GIL by default. However, sticking with this execution model leaves out extra performance afforded by modern multicore CPUs with hyperthreading, as automatic locking and unlocking of the GIL does not scale well with thread counts, especially in performance-sensitive workloads.

The newfangled free-threaded interpreter promises salvation when running either pure Python code or with compiled extensions. General multithreading rules apply (prefer thread-local variables, using locks to prevent simultaneous access of shared data), but when dealing with projects containing compiled extensions that directly or indirectly interface with Python's C API, more porting rules also apply.

Key porting tips, including projects using the Limited API, include: port native code away from C API functions that avoid borrowed references because they aren't thread-safe; modify unit tests to catch concurrency bugs arising from assuming the presence of the GIL; and extend CI coverage of Python interpreters both for testing and to build free-threaded compatible wheels.

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Charlie Lin

Charlie Lin

Freelancer, N/A
Thursday September 17, 2026 09:00 - 09:30 MDT
Homestead 3/4

09:00 MDT

Back to Basics: Lambdas, Function Objects, and std::function
Thursday September 17, 2026 09:00 - 10:00 MDT
C++ gives us at least four different ways to pass "a thing that can be called" from one piece of code to another: function pointers, function objects, lambdas, and type-erased wrappers like std::function . Modern C++ has added more — generic lambdas, deducing-this lambdas, std::move_only_function , and a healthy ecosystem of concept-constrained callable parameters. Each of these has a job it is good at and several jobs it is bad at, but they are often used interchangeably until something breaks.

We will start with the basics: what a callable actually is, how function pointers, function objects, and lambdas relate to one another, and how the compiler thinks about each of them. We will look at lambda capture rules in detail — by-value, by-reference, init captures, dangling captures, and the cases where well-meaning developers reach for [=] or [&] and ship a bug — and we will see how generic lambdas (C++14) and deducing-this lambdas (C++23) extend the model without giving up clarity.

From there we will turn to the question of how to store and pass callables. We will compare function pointers, std::function , std::move_only_function (C++23), and concept-templated callable parameters along the axes that actually matter: ownership, allocation, move-only support, performance, and what the API tells the reader. Examples will be drawn from issues that have come up writing production code and mentoring developers — including the kind of subtle ABI and lifetime bugs that hide behind a perfectly reasonable-looking std::function<void()> parameter.

We will conclude with recommendations for which tool to reach for in which situation, with reference to the C++ Core Guidelines where useful. Attendees will leave with a clearer mental model of callables in modern C++ and a defensible default for the next time they write a function that takes one.

Presenters
avatar for Roth Michaels

Roth Michaels

Director of Software Research, inMusic
Roth Michaels is Director of Software Research at inMusic, the family of music technology and consumer electronics brands behind Akai Professional, Moog Music, M-Audio, Denon DJ, and Native Instruments, among others. He stepped into this role following inMusic's 2026 acquisition of... Read More →
Thursday September 17, 2026 09:00 - 10:00 MDT
Willow Lake 3/4/5

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

09:00 MDT

Building C++20 Modules: The Rest of the Story
Thursday September 17, 2026 09:00 - 10:00 MDT
There is no classical treatise on the design and implementation build systems; no faithful textbook every toolchain engineer has on their bookshelf. If there were we would need to throw it out anyway, because C++20 modules required a significant rethink of how build systems orchestrate compilation of C++ software.

It's been said over and over again that C++20 modules complicate the classic compile and link steps for C++. However, few have dived into how exactly build systems are dealing with this step-change in complexity. Talks will demo a few raw compiler invocations and say no more about the subject. This leaves engineers unequipped to deal with problems that arise in their builds; frustrated by opaque error messages and baffling build logs.

In this talk, we're going to fill in the rest of the blanks and explore exactly how build systems are tackling modules.

Presenters
avatar for Vito Gamberini

Vito Gamberini

Senior R&D Engineer, Kitware
Coding build systems to build systems code.
Thursday September 17, 2026 09:00 - 10:00 MDT
Red Rock 8/9

09:00 MDT

Composing the Future: Async Workflows with std::execution
Thursday September 17, 2026 09:00 - 10:00 MDT
Software development has now shifted decisively to a distributed, asynchronous paradigm, in which engineers must manage code that may be executing on parallel threads, or on a different machine. Many mainstream programming languages have adapted themselves to this new world. For example, JavaScript has promises and async/await, Python has asyncio, Rust offers zero-cost async/await with compile-time safety, and Go built goroutines and channels as first-class primitives.

C++ developers face the same challenge but have been left without a standard solution. As a result, much production code remains stuck in “callback hell,” where control flow is inverted, error handling is duplicated at every level, and common patterns like "run A and B in parallel, and then combine results" must be hand-rolled every time.

This is not simply a matter of bolting async/await onto C++. Deterministic destruction, zero-overhead abstraction, and precise control over memory and lifetimes, these very properties making C++ powerful dictate that an async framework cannot rely on a garbage collector or managed runtime to paper over complexity. It must earn its place by working with the language's ownership model, not around it.

std::execution is C++’s answer to this problem. Introduced as part of C++ 26, it solves this through composable senders: lazy, type-safe descriptions of work that can be chained, branched, and parallelized before being submitted to an execution context. Like Swift's structured concurrency, std::execution enforces structured lifetimes so that async work cannot silently outlive its scope.

This talk aims to provide application developers with an introduction to the current proposal and give them a grounding in the fundamentals that can be applied in real-world applications. We will walk through several worked examples: from simple chains to parallel fan-out with error propagation, showing side-by-side comparisons with callback-based equivalents to make the advantages more concrete and relatable.

This talk assumes no knowledge of the std::execution framework and no expertise in async programming, though practical, real-world experience will certainly help ground the examples. Attendees will leave with a working understanding of the sender/receiver model, practical patterns they can use, and a clear picture of what structured concurrency means for C++.

Presenters
avatar for Alistair Fisher

Alistair Fisher

Alistair Fisher is an Engineering Team Lead at Bloomberg. He works in the Multi-Asset Risk System (MARS) Pricing group in London, where he is focused on building scalable and reliable components for portfolio pricing and risk analysis. He is interested in the use of functional programming... Read More →
avatar for Ivy Zhang

Ivy Zhang

Bloomberg LP
Ivy is a Software Engineer at Bloomberg, where she works on the company's high throughput multi-asset execution management system. She is a Technical Rep at Bloomberg and active member of C++ Guild. She holds a bachelor's degree in Computer Science and Chemical Biological Engineering... Read More →
Thursday September 17, 2026 09:00 - 10:00 MDT
Colorado B

09:00 MDT

Writing Low-Latency C++: Predictability, Cache, and the Architectures Underneath
Thursday September 17, 2026 09:00 - 10:00 MDT
In low-latency C++, correctness is table stakes. What separates good systems from great ones is predictability — the ability to hit your deadline not just on average, but at the 99th and 99.9th percentile, where real workloads live. Latency is a feature, and if you don't design for it explicitly, you lose it accidentally.

This talk is a practitioner's guide to writing C++ that behaves predictably under load, drawn from experience building and tuning low-latency systems on Microsoft's Azure Core platform. We start from the mental models that matter most — CPU-centric thinking, the latency stack from L1 to DRAM, and why minimizing work, unpredictability, and memory movement is the foundation of everything else — and then work through the layers of the stack where latency is won or lost in practice.

Through live demos and benchmark data on both x86 and ARM, we'll cover:

STL containers as latency contracts — why most latency bugs start with the wrong container, the real cost of dynamic reallocation, and the measurable wins from reserve() and custom allocators.

Memory layout and cache behavior — struct layout and alignment (and how it differs on x86-64 vs. ARM64), AoS vs. SoA trade-offs, hot/cold data separation, false sharing, NUMA, and TLB pressure.

Atomics vs. mutexes — when atomics actually lose to mutexes, why architecture and memory model dictate the answer, and how to choose between them in real code.

Threading and scheduling — fixed vs. dynamic thread pools, context-switch and migration costs, and why understanding the OS is half the battle.

Benchmarking and observability — why microbenchmarks lie, how to avoid measurement bias and jitter, why latency histograms beat averages, and why "absolute benchmark" is a myth.

You'll leave with a practical playbook for designing and measuring low-latency C++ systems, an honest understanding of why benchmarks from one machine rarely generalize to another, and a sharper instinct for the silent killers — allocations, branches, cache misses, and synchronization primitives — that don't show up in code review but do show up in production.

Presenters
avatar for Sampad Acharya

Sampad Acharya

Senior Quant Developer, Fixed Income Trading, Bloomberg
Sampad Acharya is a senior software engineer at Bloomberg, where he specializes in low‑latency, cache‑optimized C++ systems for trading and real‑time environments. He has worked in software development for six years. Sampad is deeply interested in how algorithms behave in the... Read More →
Thursday September 17, 2026 09:00 - 10:00 MDT
Colorado A

09:35 MDT

[[musttail]]-ling Our Way to a Faster Python Interpreter and New JIT Compiler
Thursday September 17, 2026 09:35 - 10:05 MDT
In CPython 3.14, we introduced an alternative interpreter implementation. This implementation used [[musttail]] , an experimental C/C++ feature that tells the compiler to enforce tail calls. Against the previous interpreter using computed gotos/switch-case, the new interpreter style shows 2%--15% performance improvement (i.e. geometric mean running time), and is more resilient against certain types of compiler bugs. This feature is already supported by Clang, GCC, and MSVC, and is also the center of a draft proposal targeting C++29. In this talk, I’ll cover the story of getting this feature into the Python interpreter, our collaboration with compiler developers, and the potential wider impact on the C++ community. I’ll also cover interesting use cases of this feature other than for writing interpreters, such as for automatically generating a simple Just in Time (JIT) compiler.

Tooling Track sessions are sponsored by Optiver.
Presenters
KJ

Ken Jin Ooi

Ken Jin Ooi is a Python maintainer since 2021 and is also currently a contractor for OpenAI. His Python work revolves around the performance of the Python interpreter, which is written in a subset of C11 that is mostly compatible with C++.
Thursday September 17, 2026 09:35 - 10:05 MDT
Homestead 3/4

10:30 MDT

The Address is Not The Place: Object Residency in C++26
Thursday September 17, 2026 10:30 - 12:00 MDT
Random Access Memory is what you buy when you don’t know what your program will do next.
 
Until recently, alternative tiers of memory with vastly different latency characteristics were largely speculative. Then DRAM got expensive. CXL memory pools, far memory, even high bandwidth flash moved from blips to serious contenders. C++ has grown its vocabulary for ownership (smart pointers) and lifetimes (RAII); but intelligent memory tiering, specifically object residency, is a word we don’t natively have.
 
Attempts have been made to solve this issue at an OS-level (Meta’s TPP), or even a compiler/runtime level (OBASE) but they approach the problem transparently by design. And thus…blind by design. You can improve tiered object locality with clever placement within pages, but all these methods are structurally incapable of predicting intent. What if the power was in the developer’s hands?
 
With reflection (P2996) and annotations (P3394), C++26 finally lets us extend the vocabulary ourselves. Game developers have deeply understood smart data grouping for decades, but much of the work is locked behind game engines; not suitable for general application development. [[likely]] and [[unlikely]] hint hot and cold paths, but the future of high-performance development hints at general purpose object residency to tier-aware allocators.
 
This talk introduces an open-source C++26 residency library, demonstrating capabilities against current, and even (simulated) future hardware. The pieces are in place for C++ to create durable abstractions for object residency; with the flexibility to accommodate memory tiers that have not been invented yet!

Presenters
avatar for Laurie Kirk

Laurie Kirk

Researcher, Google
Laurie Kirk is a researcher at Google specializing in C++, reverse engineering, and deobfuscation. She runs a YouTube channel (@LaurieWired) that covers all sorts of in-depth research topics on reverse engineering, programming, and software optimizations. She has spoken at multiple... Read More →
Thursday September 17, 2026 10:30 - 12:00 MDT
Colorado A

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

14:00 MDT

MrDocs: Reliable Reference Documentation for C++ Using the Clang AST
Thursday September 17, 2026 14:00 - 15:00 MDT
Teams writing modern C++ libraries with concepts, niebloids, deduction guides, and SFINAE-driven overload sets either accept wrong reference documentation or maintain a Doxygen + XSLT + Sphinx pipeline of workarounds. A different approach is to read C++ from the Clang/LLVM AST, separate corpus extraction from output templates, and recognize common idioms as first-class. This allows the source to stay clean from workarounds.

Doxygen-based pipelines all share these failures on modern C++. Constraint, noexcept, and explicit specifier expressions get truncated or dropped. Niebloids and function objects show as wrappers, not callables. Overloads distinguished by SFINAE or concepts scatter across the output, and CRTP base classes render with the wrong members. All of this disappears when the tool reads the compiler's AST and is able to instantiate specializations.

The talk then covers the architecture of MrDocs, an open-source documentation generator built on Clang/LLVM. Corpus extraction handles the redeclaration, template instantiation, and overload resolution problems that break naive AST traversal. Idiom recognition treats modern patterns as first-class metadata: niebloids, overload sets, concept constraints, requires-clauses preserved verbatim, function-object auto-detection, SFINAE overload sets, and deduction guides. It also captures the specifiers: explicit, noexcept, consteval, storage class, defaulted and deleted functions, and attributes. The templating layer gives full control over the output (HTML, AsciiDoc, Markdown, XML, or custom formats) without forking the tool.

The session is heavy on code from real C++ template libraries, with examples drawn from fmt, nlohmann/json, mp-units, and several Boost and Beman libraries. By the end, you will know why partial AST tools break on modern C++, what an alternative architecture looks like, and which idioms it has to recognize.
Presenters
avatar for Alan de Freitas

Alan de Freitas

Staff Engineer, The C++ Alliance
Alan de Freitas is a Staff Engineer at The C++ Alliance and one of its earliest members. He designed the architecture of MrDocs, the Alliance's open-source documentation generator for modern C++, built directly on the Clang and LLVM compiler front end and now being adopted across... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Willow Lake 3/4/5

14:00 MDT

Type Punning: the joke is on you, pun intended. Fixing UB of reinterpret_cast!
Thursday September 17, 2026 14:00 - 15:00 MDT
Many codebases contain several spots of type punning, and unfortunately a whole lot of those are incorrect and undefined behavior. While many current versions of compilers seem to do the correct thing, they might no longer do that tomorrow. Safety considerations wants to reduce/eliminate UB.

It might be worthwhile to inspect your reinterpret_cast constructs, most probably they are wrong. In this talk we will inspect what is wrong about those, we will learn about alignment, strict aliasing, object lifetime. 3 areas which might flag a red card on our type punning constructions.

Luckily the language evolved and gave us more tools to do it correctly, things like memcpy, memmove, bit cast, start lifetime_as, launder. It does however remain a dark corner and a dangerous territory to wander in. Because let's face it, zero copy is something we love in C++, and those bytes that came from the network, really are an array of integers, array of coordinates, ... Compiler, trust me, I know what I am doing. Am I?

Presenters
avatar for Lieven de Cock

Lieven de Cock

Founder, CppDriven
Lieven is a passionate software developer, architect, team lead, manager, coach, mentor, with 30 years of experience. He is passionate about C++, software craftsmanship, and clean code. His career started in the text-to-speech domain and then moved to video recognition technology... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Red Rock 8/9

14:00 MDT

What Is Your Algorithmic Core?
Thursday September 17, 2026 14:00 - 15:00 MDT
Production C++ code often hides small but deeply complex algorithms inside layers of engineering: APIs, lifetimes, error handling, integration, logging, and glue code. We test classes and systems, but rarely the algorithm itself in isolation.

Off-by-one errors and broken or missing invariants can survive extensive pre-production testing. Line coverage does not imply branch coverage. Branch coverage does not imply coverage of algorithmic corner cases. Testing through a wide public API often obscures the mathematical structure of the problem, making subtle bugs difficult to discover through multiple layers of abstraction.

This talk explores how to extract an "algorithmic core" from a larger component. Its correctness is fundamentally mathematical and largely language-agnostic rather than C++-specific.

Using examples such as substring matching, topological sorting variations, and lazy evaluation on trees, we will examine how problem corner cases differ from implementation corner cases, and how easily some of them are skipped.

We will discuss:

  • Recognizing when an algorithm is entangled with boilerplate
  • Extracting core logic without introducing accidental complexity
  • What it takes to test algorithmic code in isolation
  • Raising the level of abstraction to make reasoning easier without merely relocating complexity
  • Using LLMs to assist in exploring and validating implementations
  • Gradual rollout and comparison of competing implementations
Presenters
ES

Egor Suvorov

Senior Software Engineer, Bloomberg
Egor Suvorov is a senior software engineer at Bloomberg, where he works on DataLayer, the company's real-time streaming data transformation pipeline. Previously, he led a freshman C++ course, where his students uncovered and reported dozens of bugs in various C++ tools. Egor was also... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Homestead 3/4

14:00 MDT

When Zero-Cost Abstractions Aren’t Zero-Cost
Thursday September 17, 2026 14:00 - 15:00 MDT
Zero-cost abstractions are a foundational idea in C++, promising expressive, high-level code without sacrificing performance. However, developers often encounter unexpected costs when using modern abstractions in practice, even when the code appears idiomatic and well-designed.

This talk explores the assumptions behind zero-cost abstractions and examines what happens when those assumptions no longer hold. Through concrete examples drawn from modern C++ — including ranges and views, type erasure, allocators, and other common abstractions — we will examine how factors such as optimizer visibility, inlining boundaries, allocation behavior, and runtime flexibility influence performance.

This talk treats abstraction as a powerful engineering tool, examining the limits of its zero-cost guarantees in real-world systems. We will look at how seemingly small design choices can introduce hidden costs, why those costs are often difficult to spot through inspection alone, and how to recover performance without abandoning good design or readability.

Attendees will leave with a clearer understanding of when abstractions are truly zero-cost, how to recognize situations where they are not, and how to make informed tradeoffs between expressiveness, flexibility, and performance in modern C++.

Presenters
avatar for Steve Sorkin

Steve Sorkin

Senior Software Engineer, Bloomberg
Steve Sorkin has been at Bloomberg since 2019, where he is a senior software engineer. He is enthusiastic about writing clean, scalable, and maintainable code for use in low latency and high throughput applications. Prior to joining Bloomberg, Steve worked as a securities/derivatives... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Colorado A

14:00 MDT

Generating Language Bindings using C++ Reflection
Thursday September 17, 2026 14:00 - 15:00 MDT
Language bindings for C++ can be valuable tools for developers who wish to make C++ libraries available for use in other programming languages, like Python. There are many reasons developers may wish to do this, including testing, prototyping, or performance.

One of the issues often faced when writing bindings for C++ is the need to write excessive amounts of boilerplate code to bridge the gap between the C++ types and interfaces and their equivalents in other languages.

Building on previous presentations, this talk will not just explore how you can use Reflection in C++26 to generate the necessary binding code, but also how you can integrate this into a CMake-based build system to enable the automatic generation of bindings for existing classes or libraries with minimal additions. We will present real-world examples, primarily using Python, to show how language bindings can be automatically generated, but we also show how this can be extended to other languages.

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Callum Piper

Callum Piper

Senior Software Engineer, Bloomberg
Callum Piper has been writing C++ since 2000. He has spent five years as a Senior Software Engineer at Bloomberg, working on Derivatives Pricing services. Prior to joining Bloomberg, Callum was a consultant for more than 10 years, during which he worked on a wide range of different... Read More →
Thursday September 17, 2026 14:00 - 15:00 MDT
Colorado B

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

15:15 MDT

Leveraging LLM to Generate Unittests for Notifiers in Taskflow
Thursday September 17, 2026 15:15 - 16:15 MDT
Notifiers are a critical synchronization primitive in task-parallel programming systems such as Intel TBB and Taskflow, responsible for efficiently sleeping and waking worker threads as tasks become unavailable and available over and over again, directly impacting scheduler throughput and latency. Correctness here is non-negotiable: a single missed wakeup can significantly hamper the performance of an entire program. Yet writing strong unit tests for notifiers is notoriously difficult, because the bugs they target, lost wakeups, spurious wakes, race conditions, are timing-dependent, non-deterministic, and often only surface under specific thread interleavings that are hard to force reliably.

The problem is compounded in practice. Notifier implementations evolve constantly: small algorithmic tweaks, memory ordering changes, and refactors across systems demand a fresh round of carefully constructed tests. This is tedious, expertise-heavy work that takes a lot of time and engineering effort. In this talk, we explore using Large Language Models (LLMs) to automate the generation of the unit tests for notifiers. Specifically, we will demonstrate how LLM-generated tests, guided by proper prompts can systematically stress the two-phase wait protocol across Notifiers in Taskflow. We will show this in a widely used Notifier implemented in Taskflow. We are able to find an undiscovered bug that has been existing in the project.

Presenters
SS

Snikitha Siddavatam

Snikitha Siddavatam is a Computer Science and Data Science student at the University of Wisconsin-Madison, expected to graduate in May 2027, with coursework spanning machine learning, artificial intelligence, distributed systems, data visualization, and advanced algorithms. Snikitha... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
Homestead 3/4

15:15 MDT

The Biggest Misconception of Computer Science
Thursday September 17, 2026 15:15 - 16:15 MDT
From our very first algorithms class, we are taught a simple rule: a better Big-O complexity means a faster algorithm. We spend years mastering asymptotic analysis, memorizing complexity tables, and losing sleep over worst-case scenarios. Big-O becomes a mental shortcut for “good” and “bad” code.

But the real world doesn’t run on whiteboards.

Modern performance is shaped far more by hardware realities than by asymptotic notation alone. CPUs have deep cache hierarchies, wide vector units, speculative execution, and memory systems that punish the “theoretically optimal” solution. GPUs thrive on massive parallelism where simple linear work can outperform asymptotically superior algorithms. Even on regular CPUs, cache-friendly linear scans often beat clever sub-linear approaches that fight memory latency.

In this talk, we will challenge the traditional Big-O mindset. We’ll look at classic algorithms through a modern lens and explore how hardware-aware designs cache-efficient layouts, SIMD/AVX vectorization, and parallel execution models can outperform algorithms with “worse” theoretical complexity. You’ll see why a higher Big-O algorithm can be faster, more scalable, and more predictable in practice.

The goal is not to dismiss Big-O, but to put it back in its proper place: as a tool, not a truth. By the end of this talk, you’ll think differently about performance and start writing code that works with the hardware, not against it.

Presenters
avatar for Alex Dathskovsky

Alex Dathskovsky

Director of SW engineering, Speedata
Alex has over 18 years of software development experience, working on systems, low-level generic tools and high-level applications. Alex has worked as an integration/software developer at Elbit, senior software developer at Rafael, technical leader at Axxana, Software manager at Abbott... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
Willow Lake 3/4/5

15:15 MDT

The C++ safety issues your tools can't see
Thursday September 17, 2026 15:15 - 16:15 MDT
Much of the public criticism of C++ safety comes from vulnerabilities rooted in C patterns: raw pointer arithmetic, unchecked buffer indices, manual memory management. Modern C++ offers real answers to those problems through RAII, smart pointers, containers, and type-safe abstractions. But C++ also has its own distinct safety issues that have nothing to do with its heritage. Temporary lifetime rules that silently create dangling references. Iterator invalidation semantics that differ across containers in ways even experienced developers get wrong. Smart pointer ownership pitfalls that RAII cannot prevent. Coroutine frames that outlive their captured locals. Implicit conversions that turn a safe string into a dangling view between one line and the next. These are purely C++ problems. They compile cleanly, look correct in code review, and ship to production.

A survey of public CVE reports and security-fix commits across prominent open-source C++ projects shows the same patterns recurring again and again. This talk walks through those patterns, in code that looks correct in review, compiles cleanly, and then breaks at runtime. The session is aimed at intermediate-to-experienced C++ developers who already know modern C++ but want a working catalog of the subtle patterns that ship past typical code review.

Recognizing these patterns has long been the domain of library authors and security researchers. This talk distills a catalog from real-world fixes for everyone else: not a prescriptive standard like the Core Guidelines, but a pattern-recognition toolkit any C++ developer can apply in their next code review. The session also makes the case for expanding the community-level safety conversation to give these C++-unique patterns the same attention as the C-heritage debates.

Presenters
avatar for Ion Todirel

Ion Todirel

Lead Engineering Manager, Microsoft
I’m an engineering lead at Microsoft, building tools that make software development more accessible and boost productivity for millions of developers. I’m passionate about native code and C++.
Thursday September 17, 2026 15:15 - 16:15 MDT
Red Rock 8/9

15:15 MDT

Ranges Without Compromises: Designing for Simplicity, Performance, and Composability
Thursday September 17, 2026 15:15 - 16:15 MDT
Range views enable a "no raw loops" style of programming — not as a matter of taste, but as a pragmatic way to reuse well-tested algorithms to write code faster, express intent clearly, and avoid common bugs. In practice, however, developers often run into issues that may lead them to abandon ranges altogether: - unintuitive behavior and surprising limitations - slower compilation and runtime performance compared to raw loops - high complexity when implementing custom views

In this talk, we'll distill the core design choices behind these problems — and the alternatives that avoid them. In particular, we'll compare: - iterators and indices - external and internal iteration - transformations of nested views that overcome limitations of internal iteration

Attendees will leave with practical insights for designing and using range abstractions, along with examples of libraries that embody these ideas.

Presenters
avatar for Oleksandr Bacherikov

Oleksandr Bacherikov

Software Engineer
Oleksandr Bacherikov is a software engineer with over a decade of experience building low-latency machine learning and computer vision systems for mobile devices and AR glasses. He is particularly interested in designing abstractions that make complex algorithms simple, efficient... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
Colorado B

15:15 MDT

Modernizing Legacy Codebases without Stopping the World
Thursday September 17, 2026 15:15 - 16:15 MDT
Every mature codebase carries history and technical debt. The challenge is modernizing without stopping the world or introducing big re-write failure risks.

In this talk, we’ll explore how to modernize legacy C++ codebases incrementally using a mix of deterministic code transformations and AI-assisted refactoring .

After delving into some of the common problems with legacy modernization, we'll start tackling the simple "boring" stuff that deliver huge leverage of changes via clang tooling . These represent repeatable, deterministic reviewable upgrades that can be automated and applied at scale.

Then we can look at more difficult transformations that can be AI assisted with more aggressive transformations including API improvements and how to prevent it going off the rails. This will be backed by Compiler diagnostics, static analysis and testing to keep changes maintainable and correct .

The goal is not to replace engineering judgment, but to accelerate it: turning modernization into a continuous, low-risk workflow instead of a disruptive project.

Attendees will leave with a repeatable playbook for modernizing legacy codebases incrementally, safely, and at scale—using the right tool for each class of change

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Peter Muldoon

Peter Muldoon

Engineering Lead, Bloomberg
Pete Muldoon has been using C++ since 1991. Pete has worked in Ireland, England and the USA and is currently employed by Bloomberg. A consultant for over 20 years prior to joining Bloomberg, Peter has worked on a broad range of projects and code bases in a large number of companies... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
Colorado A

16:45 MDT

Extending Google Test for Statistical Benchmarking, CUDA Profiling, and CI Performance Regression
Thursday September 17, 2026 16:45 - 17:15 MDT
Benchmarks shouldn't live in a different world from tests. Most C++ projects already use Google Test, but the moment performance enters the picture, developers reach for separate tools, separate workflows, and ad-hoc timing loops that don't survive contact with CI. This talk argues for a different default: treat performance measurements as first-class tests. They are written in the same harness, run in the same suite, and fail the same builds.

Using a real C++23 framework built on top of Google Test, the session shows what that looks like in practice. Semantic macros distinguish throughput, latency, and contention tests; built-in statistical analysis tracks medians, percentiles, and coefficient of variation. Adaptive thresholds scale with payload size, so tiny operations and multi-megabyte workloads aren't held to the same stability expectations.

Once benchmarking lives inside the test framework, the rest of the performance toolchain follows. Five CPU profiler backends drop in behind a single --profile flag: perf, gperftools, bpftrace, RAPL, and callgrind. Attaching a memory profile to a test prints bandwidth, efficiency, and a CPU-bound or memory-bound classification with no extra code. The same harness extends to CUDA through a fluent kernel builder that captures launch configuration, achieved occupancy, transfer overhead, multi-GPU scaling efficiency, and thermal throttling. Nsight Compute drops in through the same --profile flag.

The payoff is CI integration that's nearly automatic. A companion CLI tool compares baseline and candidate runs, applies statistical thresholds, posts markdown reports on pull requests, and fails the build on regressions. The result is a single workflow for performance verification that scales from a developer's laptop to a CI runner to a Jetson on a workbench, across hardware ranging from x86 to ARM to RISC-V.

Tooling Track sessions are sponsored by Optiver.
Presenters
KG

Kevin Gomez

Flight Software Engineer, Lux Aeterna
Thursday September 17, 2026 16:45 - 17:15 MDT
Homestead 3/4

16:45 MDT

Back to Basics: Computer Systems
Thursday September 17, 2026 16:45 - 17:45 MDT
Every software engineer needs to understand the fundamentals of how your computer works. My mantra for teaching computer systems is 'no more magic', and in this talk I'll do my best to dispel what feels like 'magic' in our hardware in a single hour. In this talk, we will investigate '3' pictures of the 'the compilation process', 'program stack', and a 'cpu' to understand how these components work together to ultimately compile and execute code. An emphasis during this talk will focus on the 'CPU' and the hardware components (e.g. registers, cache memory, main memory, page table) interact with the operating system to efficiently execute a program. Hardware will be presented side-by-side with code so we can understand what happens in the hardware as software executes. Attendees will leave this talk with a better mental model of how their hardware works, and the implications their software design choices have on performance.

Presenters
avatar for Mike Shah

Mike Shah

Professor / (occasional) 3D Graphics Engineer
Mike Shah is currently a teaching faculty at Yale University with primary teaching interests  in computer systems, computer graphics, and game engines. Mike's research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics... Read More →
Thursday September 17, 2026 16:45 - 17:45 MDT
Red Rock 8/9

16:45 MDT

Meet Guy Davidson
Thursday September 17, 2026 16:45 - 17:45 MDT
For the first time in a generation, the C++ Standards Committee has a new convenor. Meet Guy Davidson.

In the decade since joining the Committee, Guy has not personally authored wording that made it into the Standard. Yet, he exemplifies what the role demands: the ability to work intently, iterate relentlessly, absorb setbacks, adapt, and return stronger. He pairs that with a deep commitment to guiding the evolution of a language that underpins much of the modern world – and a rare talent for setting aside ego to build consensus. Sometimes, he even does it in iambic pentameter; at others, in the rhythm of a sea shanty.

In this fireside chat, Guy will reflect on what it means to inherit an institution, his first months in the role, and the moment 118 hands rose in support of C++26 – while Bjarne Stroustrup’s did not. He’ll also share his own work: projects aimed at expanding C++’s capabilities, including an idea inspired by game engine design that has caught the attention of leading climate scientists.
Presenters
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 →
SS

Sherry Sontag

Bloomberg
Thursday September 17, 2026 16:45 - 17:45 MDT
Colorado B

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

16:45 MDT

Who Is #include-ing You? Measuring the Impact of C++ Libraries
Thursday September 17, 2026 16:45 - 17:45 MDT
C++ library maintainers are often in the dark as to everyone who actually depends on their code. Without that knowledge, deprecation decisions are guesses, the downstream impact of any API change is hard to predict, and the case for funding or continued investment is difficult to make rigorously. This talk demonstrates how mapping your downstream ecosystem changes the way you maintain and evolve a library, using dependent-audit, an open-source tool that discovers real-world dependents by searching public source code for #include directives and CMake integration files, and cross-referencing published academic citations. We'll show concrete examples of what this data reveals: where your true API surface lies, which users are candidates for upstream contribution, and how to make the case for your project's real-world significance. Attendees will leave with a lens for library stewardship built on data and ecosystem analysis

Presenters
avatar for John Parent

John Parent

Kitware, Inc, Research and Development Engineer
John Parent is a senior research and development engineer on the Software Solutions Team at Kitware, Inc., where he is the primary developer of the Spack package manager’s Windows support. His other work covers contributions to CMake, establishing complex CI systems and C++ /Python... Read More →
Thursday September 17, 2026 16:45 - 17:45 MDT
Willow Lake 3/4/5

16:45 MDT

Writing High Performance Parsers Using State Machines
Thursday September 17, 2026 16:45 - 17:45 MDT
Starting from the simple objective of writing an optimized lexer we will grapple with their fundamental performance factor: branch prediction. We will investigate how lookup tables can improve (or hurt) the CPUs prediction capabilities with some unexpected results. Over time our design evolves by combining parsing and lexing into a single step in a way that is as fast as just a standalone lexer. A central aspect of the design will be a primitive parsing state machine from which the parser source code is generated.

After the talk attendees will have a better understanding of some advanced branch prediction techniques and should have some new ideas for their present or future parsing endeavors.

Presenters
avatar for Torben Thaysen

Torben Thaysen

Torben Thaysen was passionate about software from a young age with his earliest C++ experiments dating back over 10 years. After acquiring his masters degree in physics he returned to his passion and became a C++ developer currently with 2 years experience under his belt. Now Torben... Read More →
Thursday September 17, 2026 16:45 - 17:45 MDT
Colorado A

17:20 MDT

API Design is Language Design: Lessons from Go's net/http library for C++
Thursday September 17, 2026 17:20 - 17:50 MDT
Years ago while working on a service that would be deployed in Kubernetes, we decided to use the simplest possible TCP based healthcheck. Not because TCP was the right choice, but because implementing a simple HTTP endpoint was more code than it was worth. For our Go services the equivalent HTTP endpoint was only a couple of lines. In fact, we eventually ended up replacing our TCP endpoint with a small Go wrapper around our C++ service.

The Go standard library has done a great job at designing a very ergonomic HTTP library. C++ now has all the right building blocks to express the same design concepts: coroutines, concepts, std::expected, std::jthread. The question is, do these patterns transfer from Go to C++? How do we evaluate the effectiveness of the resulting design?

In this talk I will present a small HTTP library inspired by Go's net/http, built with the tools available in C++23. To evaluate the resulting design I will draw on ideas from Felienne Hermans' The Programmer's Brain and the principle, from Structure and Interpretation of Computer Programs, that API design is language design.

Along the way we'll see which patterns transfer cleanly, which need translation, and why telling the difference is a skill worth developing even if you only work with C++.
Presenters
avatar for Tim van Deurzen

Tim van Deurzen

Senior Software Engineer, Eolas Engineering
I'm fascinated by compilers, programming languages, databases and anything that deals with data structures and algorithms.
Thursday September 17, 2026 17:20 - 17:50 MDT
Homestead 3/4

18:30 MDT

Meet the Presenters Banquet (Susquehanna)
Thursday September 17, 2026 18:30 - 20:30 MDT
The Meet the Presenters Banquet is presented in partnership with Susquehanna and is open to all attendees. Ticket required. Invitation is included with "Regular" and "Full" conference registration and is also available as a separate, stand-alone registration.

This is your opportunity to meet and discuss with the presenters (main program, poster, instructors) in a relaxed, informal environment.
Thursday September 17, 2026 18:30 - 20:30 MDT
Colorado C/D

20:30 MDT

Lightning Talks
Thursday September 17, 2026 20:30 - 22:00 MDT
Lightning talks are your five minutes of stardom. The format encourages a focused and often high-energy presentation about nearly anything (subject to approval by the conference) that might be interesting to the C++ community, including proprietary technologies. They can be of a lighter or humorous nature, but they need not be.

Submit your talk here
Thursday September 17, 2026 20:30 - 22:00 MDT
Colorado B
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.
Filtered by Date -