Loading…
arrow_back View All Dates
Friday, September 18
 

09:00 MDT

Back to Basics: Text Formatting
Friday September 18, 2026 09:00 - 10:00 MDT
Most C++ programmers are familiar with the traditional C++ facilities for text processing found in the iostream and string libraries. However, std::format (C++20) and std::print (C++23) provide new text formatting tools that are unfamiliar to many C++ programmers. While these new facilities can be very helpful, they can also produce some very intimidating error messages when misused. Moreover, the process for writing your own user-defined types that you can format with std::format and std::print is not very straightforward.

This session starts with an overview of the traditional C and C++ text processing libraries. It then shows how std::format and std::print neatly combine benefits from both the C and C++ libraries to create a safer, more convenient interface. After that, this session explains the steps you must take to write user-defined types that work cleanly with std::format and std::print. You’ll leave this session with a clearer understanding of the benefits of using these new text formatting facilities and how to integrate them into your existing code base.

Presenters
avatar for Ben Saks

Ben Saks

President, Saks & Associates
Ben Saks is the president of Saks & Associates, which offers training and consulting in C and C++ and their use in developing embedded systems. Ben has represented Saks & Associates on the ISO C++ Standards committee as well as two of the committee’s study groups: SG14 (low-latency... Read More →
Friday September 18, 2026 09:00 - 10:00 MDT
Homestead 3/4

09:00 MDT

The Next 20 Weeks of Systems Engineering
Friday September 18, 2026 09:00 - 10:00 MDT
For a long time, programming was constrained by our ability to produce code. That constraint is eroding rapidly. AI systems can now generate substantial amounts of code with little effort, while inspection, validation, and integration remain difficult.

This transition alters the economics of software engineering. Code is becoming easier to generate than to reason about, and sound judgment grows scarcer relative to specialized intelligence. The emphasis shifts from authoring programs to understanding systems: their structure, invariants, interactions, and long-term evolution.

The talk examines this transition through the lenses of history, language design, and recent developments in AI and metaprogramming. It argues that the central challenges ahead concern not code generation, but the management of complexity at scale.

Topics include: - historical parallels and failed predictions in computing - AI-assisted software development - language design and metaprogramming - C++ reflection and compile-time programming - abstraction as context compression - complexity management in large systems

AI will undoubtedly transform how we build software. As before, the decisive factor will be our capacity to adapt.

Presenters
avatar for Andrei Alexandrescu

Andrei Alexandrescu

Principal Research Scientist, NVIDIA
Andrei Alexandrescu is a Principal Research Scientist at NVIDIA. He wrote three best-selling books on programming (Modern C++ Design, C++ Coding Standards, and The D Programming Language) and numerous articles and papers on wide-ranging topics from programming to language design to... Read More →
Friday September 18, 2026 09:00 - 10:00 MDT
Colorado B

09:00 MDT

“If You Can’t Measure It, You Can’t Improve It”: From Profiling to Automatic Benchmarking
Friday September 18, 2026 09:00 - 10:00 MDT
Modern hardware is increasingly complex and difficult to reason about; effective C++ performance work therefore demands a disciplined loop - profile, benchmark, analyze. Yet profiling alone is tricky, doesn’t answer “what if” questions, and manual benchmarking is dominated by hidden biases.

This talk presents a novel automatic benchmarking approach that focuses on eliminating measurement biases. We combine symbolic execution of identified hot regions with microarchitectural state randomization to systematically explore latency and throughput behavior under diverse - cache, branch, data layout - conditions. The technique is integrated with Linux perf, so the entire process - region isolation, state variation, measurement, analysis - is fully automatic.

The talk first grounds attendees in profiling with hardware performance counters, Top‑down Microarchitecture Analysis (TMA), and processor tracing. We then demonstrate how to automatically stress specific microarchitectural features to produce statistically reliable, "bias‑free" benchmarks. Finally, we close the loop with machine‑code analysis, showing how the measured numbers connect directly to instruction‑level behavior and ultimately to C++ code.

Attendees will leave with a concrete framework they can apply immediately to better understand and improve C++ performance.

Presenters
avatar for Kris Jusiak

Kris Jusiak

Lead Software Engineer, Citadel Securities
Nanosecond count
Friday September 18, 2026 09:00 - 10:00 MDT
Colorado A

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

09:00 MDT

Safety in Numbers
Friday September 18, 2026 09:00 - 10:00 MDT
The C++ standard is moving more and more in the direction of safety. In the process, the committee is providing us with tools to help make our own code safer.

Many of these tools are specifically around numerics and none of them are enabled by default! To make matters worse, most C++ programmers don't even know these library features exist! Even if they did know, they wouldn't use them, because they are far too wordy.

We're going to do a survey of the relatively recently added new numeric safety related language features and see how they might come together in a real-ish project.

Presenters
avatar for Jason Turner

Jason Turner

Sole Proprietor, Jason Turner
Jason is host of the YouTube channel C++Weekly, co-host emeritus of the podcast CppCast, author of C++ Best Practices, and author of the first casual puzzle books designed to teach C++ fundamentals while having fun!
Friday September 18, 2026 09:00 - 10:00 MDT
Red Rock 8/9

09:00 MDT

Code Like a Library Author: How to Write Better C++ Application Code
Friday September 18, 2026 09:00 - 10:00 MDT
To write the best C++ application code, you must think like a library author. This talk reframes application development as a form of library design, where every component is a potential asset for future maintenance and extension.

We'll survey the C++ language features that empower library authors to create powerful, flexible, and safe abstractions. From there, we'll distill the 'library author mindset.’ You will leave with concrete principles and techniques to make your application code more modular, maintainable, composable, reusable, testable, and ultimately, more valuable.

Presenters
avatar for Jon Kalb

Jon Kalb

CppCon, Conference Chair, Jon Kalb, Consulting
Jon Kalb is using his decades of software engineering experience and knowledge about C++ to make other people better software engineers. He trains experienced software engineers to be better programmers. He presents at and helps run technical conferences and local user groups.

Jon is passionate about quality code and wants to inspire others to achieve their best engineering work. He is excited about modern C++ and how we can exploit the latest hardware developments with standard, portable C... Read More →
Friday September 18, 2026 09:00 - 10:00 MDT
Willow Lake 3/4/5

10:30 MDT

Memory Safety on a Microcontroller: What Embedded C++ Teams Can Actually Do Today
Friday September 18, 2026 10:30 - 11:30 MDT
The White House says stop using C++. CISA wants a memory safety roadmap. The internet says rewrite everything in Rust. Meanwhile, embedded teams are shipping firmware on Cortex-M microcontrollers with limited flash, no MMU, no virtual memory, and a codebase that cannot be rewritten overnight. So what do you actually do?

This talk is a practical, tool-by-tool walkthrough of every memory safety technique available to embedded C++ developers right now — and what is coming in C++26. It starts with what you can turn on today without changing a single line of code: compiler warnings that most projects still ignore, AddressSanitizer and UndefinedBehaviorSanitizer running on host-compiled firmware, and stack protection options that cost single-digit bytes of overhead. It then moves to code-level improvements that modern C++ makes possible: replacing raw pointer arithmetic with std::span, using std::expected instead of error codes that nobody checks, applying constexpr to move validation to compile time, and adopting strongly typed wrappers to eliminate unit-of-measure bugs. Finally, it covers what C++26 brings to the table — hardened standard library containers with bounds checking at 0.3% overhead, safety profiles for type and bounds and lifetime checking, contracts for defensive preconditions, and the elimination of uninitialized-variable undefined behavior — and evaluates which of these features are realistic for embedded targets today.

Every technique is evaluated on three axes: how much code do you have to change, what does it cost in code size and runtime on a real microcontroller, and what class of bugs does it actually prevent. Attendees will leave with a prioritized adoption checklist they can bring back to their team on Monday.

Presenters
avatar for Darijo Topic

Darijo Topic

Embedded Software Engineer
Darijo is an embedded firmware engineer at Mettler Toledo in Zurich, where he develops C++ firmware for automated laboratory reactor platforms. His daily work spans microcontrollers, real-time control, and the Zephyr RTOS ecosystem, with a focus on bringing modern C++ practices into... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Homestead 3/4

10:30 MDT

What can C++26 reflection do for you?: A practical experiment in using reflection with an emphasis on binary protocol support
Friday September 18, 2026 10:30 - 11:30 MDT
How far can C++26 reflection take us? What are some techniques, gotchas, limitations and workarounds? How would reflection help write code that interacts with bespoke binary data formats? Come along as we explore a practical example together.

This talk will review advice gleaned from applying C++26 reflection to binary (structs on a wire) protocol handling. This type of protocol exists all around the world from financial market data formats to custom hardware interaction. Is the proposed reflection support enough to take a protocol definition written in the native terms of C++ and create flexible components to interact with that protocol?

Presenters
avatar for Andy Webber

Andy Webber

Technologist, Susquehanna
My name is Andy Webber and I work at Susquhanna which is a financial trading company near Philadelphia, PA. I started learning C++ in high school and I’ve been hooked ever since. I especially enjoy attempting to understand the full stack from the hardware up through high-level... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Colorado A

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

10:30 MDT

IEEE 754 Decimals for C++: The Boost.Decimal Library
Friday September 18, 2026 10:30 - 11:30 MDT
Why does 0.1 + 0.2 not equal 0.3? Because binary floating-point cannot exactly represent most decimal fractions, the value 0.1 simply does not exist in IEEE 754 binary. For applications where rounding errors are unacceptable, finance, billing, regulatory reporting, scientific data interchange, this is a structural problem, not a precision setting that can be tuned away. IEEE 754-2008 introduced a decimal floating-point alternative that stores the significand in base 10, and ISO/IEC TR 24733 sketched a C++ binding for it. Compiler support, however, has remained uneven across vendors and architectures.

Boost.Decimal is a header-only, dependency-free, C++14 implementation of IEEE 754-2008 and TR 24733 decimal floating-point. It provides three IEEE-conformant types, decimal32 t, decimal64 t, and decimal128 t, and three companion decimal fast* t types that trade strict bit-layout conformance for speed where you don't need on-the-wire interoperability. All six types behave like built-in floating-point: they're constexpr-friendly throughout, support mixed arithmetic and promotion, and ship with their own implementations of , , , , , hashing, , and Boost.Math integration. The library is tested natively on x86 64, ARM64, and s390x, and under emulation on PPC64LE and ARM Cortex-M.

This talk is the introduction to decimal floating-point that most C++ programmers never got. We'll cover what decimal floating-point actually is at the bit level (BID vs. DPD encodings, the cohort concept that has no analogue in binary), why the standard library's defaults are what they are (e.g. Rounding), and how Boost.Decimal's API maps onto familiar and patterns. We'll work through worked examples, parsing a price feed, computing financial summary statistics through Boost.Math, round-tripping values through while preserving cohort information, and walk through the library's deliberate deviations from both IEEE 754 and the C++ standard, including why floating-point exception flags were sacrificed to keep constexpr and how from_chars was extended to distinguish overflow from underflow as well as preserve cohorts. We'll close with reviews of the benchmarks versus binary floating point, as well as other existing libraries.

By the end, attendees will know when reaching for decimal is the right call, which of the six types fits their workload, and what trade-offs the library made on their behalf.

Presenters
avatar for Matt Borland

Matt Borland

Staff Engineer, The C++ Alliance
Matt Borland earned his bachelor's from the University of Michigan and his master's from the Georgia Institute of Technology, and is currently a doctoral candidate in Electrical and Computer Engineering at Purdue University. He is the author of Boost.Charconv and Boost.Decimal, both... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Red Rock 8/9

10:30 MDT

Incremental Modernization: Refactoring Legacy OOP Application Code using Type Erasure and Functional C++
Friday September 18, 2026 10:30 - 11:30 MDT
As legacy C++ codebases evolve to meet new requirements, fix architectural issues, and address performance bottlenecks, refactoring becomes inevitable — but full rewrites are risky, costly, and rarely practical. This talk explores how modern C++ features — especially functional programming techniques and type erasure — can be used to refactor and extend legacy systems. We will present a concrete, low-risk, and measurable four-step technical framework for incremental modernization, by leveraging pure functions, discriminated union types, and type-erased callables to achieve safer, more flexible code with compile-time guarantees, even in traditionally object-oriented codebases.

The core of the talk will walk through the entire process on a concrete code example, illustrating (1) how to isolate existing logic, (2) define safer data models using immutable types, (3) deploy type erasure to create a robust, non-disruptive adapter boundary between old and new code, and (4) measurably execute the migration with safe testing practices. We will also share lessons learned from real-world experience and conclude by showing how these foundational patterns can be extended into future-thinking designs, leveraging examples with accepted C++26 features. Every step is grounded in real production constraints and trade-offs, and the techniques transfer directly to any domain where full rewrites are not an option. Attendees will walk away equipped with practical strategies to incrementally refactor your legacy systems without sacrificing stability or velocity.

Presenters
avatar for Jessica Ding

Jessica Ding

Jessica Ding is a software engineer at Bloomberg, where she develops and maintains robust, high-performance trading and order management solutions that enable efficient execution, monitoring, and management of complex orders across global markets. Jessica earned her bachelor’s and... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Willow Lake 3/4/5

10:30 MDT

Mock Any Function in C++ Without Changing a Single Line of Code
Friday September 18, 2026 10:30 - 11:30 MDT
In many languages, you can mock almost anything. Python has unittest.mock, Java has Mockito and PowerMock, and C# has Moq. In C++, you can usually mock only what was designed to be mockable — and little else. Want to mock a free function? Wrap it in an interface. A static method? Refactor to a template. A non-virtual member? Redesign the class hierarchy. The cost is real: developers either shape production code around testing-tool constraints instead of domain needs, or they simply leave hard-to-mock code untested.

This talk introduces BonoboMock, a new C++ mocking library we developed and published as open source that can mock almost any C++ callable — free functions, static methods, non-virtual members, private members, templates, lambdas, and even extern "C" routines — without modifying the code under test. Developed and battle-tested at Bloomberg for three years across a very large C++/C codebase, it aims to deliver a first-class testing experience for C++. Under the hood it uses runtime binary patching — replacing function prologues with redirections at test time, restoring them on scope exit — all surfaced through familiar Google Mock syntax.

We'll show BonoboMock in action, walk through the patching mechanism, and share how to get started -- you'll walk away ready to test almost any function, regardless of how it was designed. Strong test coverage has always been essential, and AI-assisted code generation only increases the need for reliable testing backpressure. C++ deserves mocking tooling that matches.

Tooling Track sessions are sponsored by Optiver.
Presenters
avatar for Ilya Ermakov

Ilya Ermakov

Software Engineer, Bloomberg L.P.
Ilya Ermakov is a Software Engineer at Bloomberg working on Distributed Systems and C++ tooling. Ilya holds a Computer Science degree from Vanderbilt University.
BR

Brian Rudo-Hutt

Brian Rudo-Hutt is a Senior Software Engineer at Bloomberg and organizes engineering-wide initiatives to improve testing, safety, and software maturity. Brian holds Computer Science and Electrical and Computer Engineering degrees from Cornell University and lives with his family in... Read More →
avatar for Ruifeng Zhang

Ruifeng Zhang

Software Engineering Team Lead, Bloomberg LP
Ruifeng Zhang is a software engineering team lead at Bloomberg, where he works on data entitlement systems. Prior to joining Bloomberg, he worked primarily on hardware related projects for CPU development. His interests include testing, performance, API design, and reliability. He... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
Colorado B

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

Back to Basics: Function Overloading
Friday September 18, 2026 13:30 - 14:30 MDT
Modern programming languages offer powerful tools for creating intuitive, expressive code, but few are as frequently debated as function and operator overloading. While these features allow developers to write code that mimics natural mathematical notation, such as A+B for complex numbers or vectors, they also introduce significant risks of ambiguity, hidden performance costs, and unintuitive behavior if misused.

This talk explores the balance between expressive power and code maintainability. We will dive into the mechanics of compile-time polymorphism, examining how compilers resolve overloaded calls and the strict rules governing arity, precedence, and associativity. Beyond the what and the how, we will talk about the when and the why with examples.

Presenters
avatar for chris ryan

chris ryan

Software Engineer (Emeritus)
Classically trained in hardware and software engineering.Well experienced in Modern C++ and Classic ‘C’ with extremely large problem spaces and Firmware on Embedded devices.Believes strongly in reducing complexity and teaching the fundamentals of the core language mechanisms.ISO-Cpp/WG21... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
Red Rock 8/9

13:30 MDT

Code You Didn't Write: Understanding Large and Unfamiliar Codebases
Friday September 18, 2026 13:30 - 14:30 MDT
First day on a new project. You set up your workstation and then download a repository of over 1,000,000 lines of code. Even more intimidating, the code has been around for 20 years. Parts are in legacy C++, parts use the latest C++26 features, and increasingly, AI coding assistants are weaving new code through all of it, meaning some parts of the codebase may have never been fully understood by a developer. You feel overwhelmed. Don't Panic! In this talk, we share techniques and tools that real engineers use to find their bearings in code they didn't write, from the humble grep through debuggers and profilers to time-travel debugging and AI-assisted exploration. The audience will leave this talk with a mix of simple and advanced tricks for navigating large and complicated codebases.

Presenters
avatar for Chris Croft-White

Chris Croft-White

Staff Solutions Architect, Undo
Chris Croft-White is a Staff Solutions Architect at Undo, where he works at the intersection of debugging technology and developer productivity. With a career spanning field applications engineering, security, and technical pre-sales, he brings a practitioner's perspective to the... Read More →
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 →
Friday September 18, 2026 13:30 - 14:30 MDT
Colorado B

13:30 MDT

Thinking Low Level, Writing High Level
Friday September 18, 2026 13:30 - 14:30 MDT
An overview of contemporary hardware platforms and how software engineering and design practices and methodologies could help in building performant systems, with a particular focus on low level optimizations. Contrary to attempting direct low level software engineering for addressing performance specifics, this talk would focus on how higher level abstractions could and should be used, and how a software engineer could help the compiler to “do the right thing”. The trend of moving software engineering focus upward to constructs that have a tendency of hiding the specific of the underlying platform is quite clear – and there certainly are very good reasons for such a paradigm change.

Performance matters. Premature optimization is evil. Is there anything in between those two extremes? How feasible is it to rely on the abstraction of the platform as hidden by the compiler and the corresponding libraries and language constructs, expecting that it will be able to realize the intended lower level optimizations? How much of hints and specifics would one need to expose for the compiler to be able to get the equivalent of direct low level approach? What is the right balance between expressing application logic via higher level construct yet still being able to gain the performance benefits compared relying on the low level specifics?

Looking from the practical applicability of lambdas, iterators, ranges, coroutines, error handling, and safe(r) memory access, the talk would attempt to cover a set of use cases with a focus on analysis of what could be done for focusing on performance.

The overall goal of the talk is not to go deep into low level aspects; the goal is to explain that one needs to be aware of such low level details while operating on the higher level constructs.

Presenters
IB

Ignas Bagdonas

Principal Architect, Equinix
Ignas Bagdonas has been involved in network engineering field for over two decades, covering operations, deployment, design, architecture, development, and standardization aspects. He has worked on multiple large SP and enterprise networks worldwide, participated in many of the world's... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
Colorado A

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

13:30 MDT

When Air Gaps Learn: AI, Data, and the New C++ Attack Surface
Friday September 18, 2026 13:30 - 14:30 MDT
Air-gapped systems used to be protected by what they could not reach. That assumption breaks when telemetry, sensor data, and diagnostic output leave the system and AI model-influenced behavior comes back in, even without a network connection.

This talk examines the C++ engineering decisions that determine whether that data exchange is safe or silently dangerous. The problems are C++-specific and subtle: struct layout and padding that corrupt data silently across serialization boundaries; undefined behavior in type-punned casts that passes tests but breaks under a different compiler or optimization level; ownership and lifetime assumptions that hold inside the system but become dangling references once data crosses a trust boundary; allocator and exception constraints in no-exception embedded environments that make standard validation patterns unavailable.

We will look at how C++ systems in industrial, embedded, and safety-critical environments can export logs, telemetry, and traces into AI pipelines without creating feedback loops that affect production behavior in unverified ways. The engineering controls are concrete: typed serialization boundaries that make layout assumptions explicit, schema validation that survives ABI differences between host and edge, provenance tracking built into ownership types, deterministic guardrails around probabilistic inference outputs, and fail-safe fallbacks that don't rely on the model being correct.

Attendees will leave with a design approach for integrating AI-adjacent workflows into high-integrity C++ systems. One that treats the data boundary as a first-class security surface, not an afterthought.

Presenters
avatar for Matthew Butler

Matthew Butler

Fractional CTO / CISO & Managing Partner, Laurel Lye Systems Engineering
I help CEOs and founders of high-stakes companies secure and scale their technology without the noise.

As a Fractional CTO/CISO, I bring 35+ years of experience designing and safeguarding systems where failure isn’t just a bug - it's a lawsuit, a breach, or a tragedy.

I specializ... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
Homestead 3/4

13:30 MDT

Implementing Async RAII
Friday September 18, 2026 13:30 - 14:30 MDT
C++ lifetime management is fundamentally built around synchronous scope exit. Constructors establish invariants, destructors release resources, and RAII permits ownership and cleanup to compose naturally with ordinary control flow. Asynchronous systems disrupt this model. Destruction may itself require asynchronous work, and “just launch another task in the destructor” quickly turns deterministic lifetime management into unstructured background activity.

This talk explores the implementation of async lifetime management in std::execution, based on the enter/exit scope sender framework proposed in P3955. Rather than treating async construction and destruction as special cases, the model reframes them as composable asynchronous protocols built around explicit async scope entry and exit operations. The talk follows the process of turning these ideas into working code, beginning from the low-level enter/exit sender abstractions and progressively assembling higher-level lifetime facilities on top. Along the way, the implementation uncovers an important self-similarity in the problem domain: Higher-level async lifetime facilities can themselves be expressed in terms of the same lower-level async lifetime primitives.

The implementation discussion focuses on the machinery required to make these guarantees real: Coordinating async teardown within structured concurrency, managing partially-entered scopes, and preserving deterministic cleanup semantics even when destruction itself becomes asynchronous. The resulting design serves both as a practical exploration of async lifetime management and as a case study in how implementing an abstraction can reveal deeper structural properties hiding inside the model itself.

Presenters
avatar for Robert Leahy

Robert Leahy

Robert Leahy is a C++ systems engineer specializing in the design of C++ libraries and high-performance infrastructure. Over the past decade he has built latency-sensitive financial systems, contributed to patented database technology, and developed production software for processing... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
Willow Lake 3/4/5

14:45 MDT

Back to Basics: C++20 Concepts
Friday September 18, 2026 14:45 - 15:45 MDT
In this talk we will explore "Concepts," a powerful feature for expressing template requirements added in C++20. Participants will learn how concepts improve code readability, provide clearer compiler diagnostics, and help enforce correct usage of templates and function overloading. Through simple, hands-on examples, we will explore the syntax, common use cases, and best practices for integrating concepts into modern C++ code. By the end of the session, attendees will understand how to write safer, more maintainable template code and leverage concepts to communicate intent clearly.

Presenters
avatar for Amir Kirsh

Amir Kirsh

Teacher, Academic College of Tel-Aviv-Yaffo
Amir Kirsh is a C++ lecturer at the Academic College of Tel-Aviv-Yaffo and Tel-Aviv University, previously the Chief Programmer at Comverse, after being CTO and VP R&D at a startup acquired by Comverse. Amir is also co-organizer of the annual Core C++ conference and the Core C++ meetup... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Willow Lake 3/4/5

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

14:45 MDT

Escaping 1996: Meta-Modern C++ Techniques for Embedded Systems
Friday September 18, 2026 14:45 - 15:45 MDT
The software in most embedded projects written in 2026 looks like the software in embedded projects written in 1996. This isn't because 1996 was the peak of innovation and quality but rather has more to do with biases and FUD. Unfortunately, much of the world suffers from these choices: users, developers, managers, and shareholders.

There are better ways to write firmware for embedded systems; proven techniques and implementation strategies that I will describe in this talk. We will explore techniques based on abstraction and composition that maximize understanding while reducing the codegen footprint. We will apply these strategies at all levels of the firmware stack: interrupts, register manipulation, peripheral communications, and the application glue.

Join me and leave with open-source libraries, an open-source starter project, and techniques that you can apply to your greenfield and existing projects.

Presenters
avatar for Michael Caisse

Michael Caisse

Senior Principal Engineer, Intel
Michael started using C++ with embedded systems in 1990. He continues to be passionate about combing his degree in Electrical Engineering with elegant software solutions and is always excited to share his discoveries with others. Michael is a Senior Principal Engineer at Intel where... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Homestead 3/4

14:45 MDT

In Pursuit of a 6,000 FPS Game Boy Emulator
Friday September 18, 2026 14:45 - 15:45 MDT
How far can modern C++ push an emulator before performance stops being a C++ problem and becomes a systems problem? This talk is the final part of a CppCon trilogy about building an extremely fast Game Boy emulator in modern C++, moving from high-performance emulation techniques to the limits imposed by hardware, compilers, and CPU architecture.

The target is intentionally absurd but not arbitrary: a Game Boy emulator running Tetris at roughly 100 times original speed, about 6,000 frames per second. However, the goal is not to support every Game Boy cartridge ever made. This project deliberately specializes for one iconic game first, using the code paths Tetris actually exercises as a guide, while keeping enough design discipline to test other games later. That means questioning the architecture of the emulator itself: instruction dispatch, memory access, generated code size, cache behavior, branch prediction, compile-time computation, benchmarking methodology, and the tension between accuracy, maintainability, flexibility, and raw throughput.

This is not a victory-lap performance talk. It is a measurement-driven engineering investigation. Rather than treating 6,000 FPS as just a headline number, this talk treats it as a stress test: a way to force difficult design decisions into the open. Attendees will leave with concrete lessons about performance-oriented C++: how to measure methodically, how to specialize without losing control, how to reason about modern CPU behavior, and how to decide when an optimization is worth its cost.

Presenters
avatar for Tom Tesch

Tom Tesch

Lecturer, DAE - Howest
Tom is currently a senior lecturer for the Bachelor in Digital Arts and Entertainment at Howest University of Applied Sciences, where he is on a mission to inspire the next generation of game developers. His expertise revolves around teaching C++, algorithms, and the core principles... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Red Rock 8/9

14:45 MDT

What 25 Days of Optimisations Taught Me About Compilers
Friday September 18, 2026 14:45 - 15:45 MDT
In December I posted a short video every day about a different compiler optimisation. Some were obvious. Some surprised me. A handful caught me out completely, and some even were compiler bugs!

This talk distils the most interesting into one talk. It isn't a clip show: the order matters, the gaps matter, and together they tell a story about where modern optimisers are scarily good, where they're stubbornly bad, and where that gap has moved in the last few years. With outtakes about what didn't make the cut and what I got wrong on camera.

Presenters
avatar for Matt Godbolt

Matt Godbolt

Programmer and sometime verb, Hudson River Trading
Matt Godbolt is the creator of the Compiler Explorer website. He is passionate about writing efficient code. He works for Hudson River Trading on cool and interesting performance things. He's previously hacked on mobile apps at Google, run his own C++ tools company and spent more... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Colorado A

14:45 MDT

Concurrency for Modern CPUs - Lock-Free or Lock-based?
Friday September 18, 2026 14:45 - 15:45 MDT
For decades, lock-free programming has been the go-to optimization for the most contended parts of concurrent programs. The reasoning was simple: locks are slow under contention, so eliminate the locks. This made sense on the hardware of the time, and I should know—I've given several talks explaining how and why to do it. The hardware has changed. Modern CPUs are highly optimized for the operations that make locks fast: cache-line transfers, memory ordering, and speculative execution through lock acquisitions. To set the stage, we will briefly establish why, under high contention, a well-written lock consistently outperforms lock-free atomics and CAS loops. (As an aside, I'll hand you a concrete recipe for a spinlock that actually holds up under extreme contention—and show why systematic backoff, by batching cache-line ownership, is what protects the shared interconnect.) But the core of this talk addresses a completely flipped reality: at low contention, lock-free code decisively outperforms spinlocks, for the most surprising reason. Conventional wisdom assumes an uncontended spinlock is practically free. Using raw hardware performance counters, we will see why it isn't: the implicit synchronization a spinlock imposes—even with no contention at all—is deeply unfavorable to modern out-of-order pipelines, while a single lock-free XADD or CAS, an indivisible read-modify-write, is not. The path everyone assumes is free turns out to be the quietly expensive one. Putting these two facts together—locks winning high contention via cache-line batching, atomics winning low contention by staying out of the pipeline's way—points to a concrete design. I will present a highly optimized MPMC (multi-producer, multi-consumer) queue built on a dual-domain structure that deliberately segregates the contended path from the uncontended one, letting each run on the mechanism the hardware actually favors. We will then walk extensive benchmarks across modern silicon—Intel, ARM server (Graviton/Grace), and Apple (M3)—showing this queue is the fastest, often by wide margins, across most operating regimes. We will also see why the tradeoffs play out so differently per chip, in ways that aren't obvious from the spec sheet, and why "ARM vs x86" is the wrong axis entirely—what matters is the chip's target market, not its instruction set. Finally, no benchmark is complete without honest caveats. I will detail the specific corners where this design can still be beaten, the hidden system costs you pay elsewhere to buy this throughput, and why systems that strictly require progress guarantees—deadlock avoidance, priority inversion, safe execution in a signal handler—mean traditional lock-free programming is not dead. It has simply relocated. If you've ever reached for a complex lock-free algorithm to speed up a highly contended hot path—or wondered what your CPU is actually doing during a mutex unlock—this talk will change your mind about where lock-free programming truly belongs.

Presenters
avatar for Fedor Pikus

Fedor Pikus

Fellow, Siemens EDA
Fedor G Pikus is a Technical Fellow and the Director of the Advanced Projects Team in Siemens Digital Industries Software. His responsibilities include planning the long-term technical direction of Calibre products, directing and training the engineers who work on these products... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
Colorado B

16:15 MDT

C++: Growing in a world of efficiency, safety, and AI
Friday September 18, 2026 16:15 - 18:00 MDT
C++ is adding major expressive power (e.g., reflection) and addressing weaknesses (e.g., memory safety hardening) at exactly the moment when chip supply and power budgets are raising the value of what people came to C++ for in the first place: control over memory layout (space) and deterministic performance (time). This talk is about that convergence, in two parts.
First, we cover the latest developments in ISO C++ itself, where the committee completed technical work on C++26 in March 2026, and then in June voted the first additions into the working draft for C++29:
  • Key C++26 language improvements like reflection and the initial round of memory safety hardening, and standard library performance enhancers like std::simd and std::execution.
  • A new Annex in the C++29 working draft cataloging every case of core language undefined behavior, the first step toward addressing it systematically rather than one paper at a time.
  • Draft “profiles” for stronger portable memory safety guarantees, now being prototyped and targeted at C++29.
Second, we consider how quickly both hardware and software are moving in the industry around us. This year, capital is pouring into silicon and power at a jaw-dropping rate, and agentic systems are arriving with new capabilities and new failure modes. We’ll see how both affect C++ programming in the trenches:
  • Why performance efficiency has been enduringly important, from the 1940s through to today and with no end in sight.
  • How current industry data (SlashData, IDC) documents sustained growth in demand for professional programmers, especially who know languages that can operate under real space and time constraints.
  • What AI does and doesn’t change about any of it: a pragmatic view both of where AI has shown real benefit in our programming world, and of what it’s not good at (yet, or ever).
Throughout, we might hear a little grumbling from the speaker about how he has always written his own talk titles and abstracts and prose using em-dashes, but now can’t use em-dashes anymore because of, well, you know.

Presenters
avatar for Herb Sutter

Herb Sutter

Technical fellow, Citadel Securities

Friday September 18, 2026 16:15 - 18:00 MDT
Colorado A
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.
Filtered by Date -