
Understanding large and unfamiliar codebases
It's your first day on the job as a new employee or intern. You setup your workstation and then download a repository of over 1,000,000 lines of code ...
click here for more...

Missing (and future?) C++ range concepts
Iterators and ranges have been essential parts of the C++ standard library since its inception. With C++20, they were brought to the next level in the form of std::ranges: We now have formalized requirements on the algorithms, lazy views to enable pipelines, and much more powerful iterators ...
click here for more...
C++ Performance Tips: Cutting Down on Unnecessary Objects
In C++, unnecessary temporary object creation can lead to costly runtime operations, increased code execution, and higher memory usage. Luckily this can be improved. This talk investigates common scenarios that result in the creation of temporary objects, demonstrated through code examples ...
click here for more...

Better Threading support in C++20
We got threading support by the language and library in C++11. There were however a few things missing, like RAII for a thread object, or a nice way to stop a thread, or to request it to stop. Similar problem, how do we stop a ‘waiting’ condition variable ...
click here for more...
CMake for the Impatient
CMake has emerged as a leading tool for managing C++ projects. Although it's not particularly new, there's a perception that it's complicated, arcane, or just unfamiliar ...
click here for more...
KEYNOTE: From LeetCode to Leadership: Fixing Broken Engineering Interviews
The traditional technical interview process is fundamentally flawed. Despite years of industry experience, many senior candidates are still subjected to algorithmic coding challenges that fail to reflect their actual job responsibilities ...
click here for more...
An introduction to reinforcement learning: Snake your way out of a paper bag
When people talk about AI they tend to mean LLMs, so this talk will to remind us of other approaches to AI. Reinforcement learning (RL) is a type of machine learning, so part of AI. An 'agent' takes actions in a dynamic environment. Better outcomes are rewarded and worse outcomes are penalised ...
click here for more...
Welcome to v1.0 of the meta::[[verse]]!
This talk will introduce what is (likely) the final version of the 'Reflection' feature targeting C++26. With a proposal slated to introduce reflection to C++26 (including the “std::meta” namespace) getting strong support in WG21, we can already start imagining a whole new world of possibilities ...
click here for more...
Telling Your Technical Story
A good technical talk is as much about storytelling as it is about presenting information. At best, it is a shared experience between speaker and audience. Even the most complex topics can be presented simply and clearly, sparking questions, conversation, and perhaps even some argument ...
click here for more...
The Pattern Matching We Already Have
All the way since C++98, we have already had pattern matching in C++. It's limited to specific places, but it's there ...
click here for more...
Green Programming
Energy consumption of IT centers is on the rise worldwide and makes up a non-negligible part of the total consumption. This is not just an economical but also an ecological problem ...
click here for more...

What C++ Needs to be Safe
The world runs on C++. For more than two decades, C++ has served as the workhorse of high-performance, low-power, and low-latency software across industries. Its raw speed and unconstrained flexibility have made C++ the go-to language for and backbone of large-scale software development ...
click here for more...
C++ Value Categories in Action: The Foundation Behind Overloads, Moves, and the Broader System
Lvalues, rvalues, xvalues, glvalues, prvalues, reference binding, std::move, and temporary materialization - we have heard of them, we use them regularly, and they are part of every C++ programmer’s daily work, but if I am honest, my own grasp of how they truly interact was a bit rusty until I dug i ...
click here for more...
Will your program still be correct next year?
Let's discuss what tests are for, and let those thoughts evolve into guide lines for a good testing philosophy. This talk is based on my experiences, both good and bad, and will offer advice for testing throughout the lifetime of your program ...
click here for more...
KEYNOTE: Contracts, Safety, and the Art of Cat Herding
In recent years, we have seen a strong push to make C++ 'safer' and 'more secure'. Several efforts are under way: contract assertions and library hardening have already been approved for the upcoming C++26 standard, while proposals like profiles and borrow checking are still in development ...
click here for more...
Understanding, Using, and Improving `std::generator`
Generators are one of the most common uses of C++20 coroutines and the only one directly supported in the standard library (since C++23). In this talk, we will explore the interface and potential applications of std::generator, as well as its performance on current compilers ...
click here for more...
KEYNOTE: Three Cool Things in C++
It's 2025, and C++ is vibrant and growing. The next standard's feature set should be finalized about 48 hours before this opening talk of C++ on Sea 2025, and there's a lot going on with new safety and modules improvements in real-world compilers and standard libraries ...
click here for more...
Namespaces 101
In this beginner-friendly talk, we are going to explore namespaces. They are an essential tool for organizing our codebase around different concerns and across different layers. But we cannot call it a day by simply stating that. We also need to discuss their evolution ...
click here for more...
Software Engineering Completeness : Knowing when you are Done and why it matters
Whether creating new features, fixing bugs or looking at larger issues affecting a codebase, what does 'Done' mean in software engineering terms and what is its effect on delivering change in the real world ...
click here for more...
To Err is Human: Robust Error Handling in C++26
Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in ...
click here for more...
C++ Contracts – a Meaningfully Viable Product
After 2 full decades of multiple efforts aimed at introducing a contracts feature into the C++ language, contracts have finally been voted into C++26 at the February 2026 C++ Standards Committee (WG21) meeting in Hagenberg, Austria ...
click here for more...
Teaching an Old Dog New Tricks: A Tale of Two Emulators
As a self-proclaimed C++ dinosaur, I set out to prove that my comfortable, battle-tested ways of writing code (somewhere between C++11 and C++14) were clearly superior to all this modern constexpr-everything, coroutine-laden C++ ...
click here for more...
Don’t get overloaded by overload sets
C++ developers write or use overload sets quite often in their daily work. On the surface overload sets seem like an easy to understand feature but this is C++ so there is lots of nuance lurking below the surface ...
click here for more...
Safe and Readable Code: Monadic Operations in C++23
Let's talk about monads. What are they. Why and how would you use them. The aim of this talk is to introduce some fundamental functional programming techniques (such as monads) and explain how they make your code safer and more readable ...
click here for more...
Faster, safer, better ranges
C++20 added Ranges to the standard library, extending the classic iterator model introduced in C++98. Unfortunately, the iterator-based design means that Ranges can often end up leaving performance on the table, as well as causing safety issues and usability problems ...
click here for more...
The Power and Pain of Hidden Symbols
If you develop on Windows, you're used to the pain and annoyance of having to manually export symbols from your DLLs. If you develop on Unix, you're used to symbols in shared objects being implicitly exported ...
click here for more...C++ Best Practices
In this highly interactive 2-day class, we will review code and discuss what makes for good, high-quality C++. If you have read one of Jason's C++ Best Practices books, you'll have more context and will be better prepared to discuss the content ...
click here for more...
Beyond Sequential Consistency
In 2011, C++ introduced a formally defined memory model, providing a foundation for portable, multi-threaded code with well-defined correctness guarantees ...
click here for more...
Variadic Templates and Parameter Packs
Support for variadic templates was one of the major features introduced by C++11 standard. It not only enabled complex metaprogramming techniques but also made development of flexible and optimizable code much simpler ...
click here for more...
In Search of the Perfect Return: A C++ Programming Journey
Marcel Proust wrote (trans. ) that 'The true voyage of discovery... is not a journey to a new place; it is learning to see with new eyes. ' Accordingly, in the first part of this talk, we’ll explore a targeted selection of C++ features whose surface behaviors are already familiar to most of us ...
click here for more...C++ Templates for Developers
As an intermediate-level C++ programmer, you already know about and have very likely used one or more kinds of C++ templates in your code ...
click here for more...
Extending std::execution Further: Higher-Order Senders and the Shape of Asynchronous Programs
std::execution and the Senders & Receivers (S&R) model introduce a powerful new vocabulary for expressing asynchronous operations ...
click here for more...
The 10 Essential Features for the Future of C++ Libraries
C++ is a powerful language for building high-performance, flexible libraries. However, language and standard library limitations often hinder library developers from achieving their full potential ...
click here for more...Structured Concurrency in C++: A Hands-On Workshop
Today, C++ software is increasingly asynchronous and parallel, a trend that is likely to continue ...
click here for more...
C++23 in Practice: A Complete Introduction
C++23 is the latest C++ release, which major C++ compilers start to support now more and more. Therefore, it is time to look at the contents of C++23 (to both new features and relevant extensions/modifications) ...
click here for more...Rethink Polymorphism in C++
To implement polymorphism and heterogeneous collections the usual approach is to use inheritance and virtual functions ...
click here for more...
What can C++ learn about thread safety from other languages?
Memory safety issues in C++ have been discussed in great length over the past few years but a big corner of safety and security, thread safety seems to get far less coverage ...
click here for more...
Balancing Efficiency and Flexibility: Cost of Abstractions in Embedded Systems
This session will feature detailed case studies that measure the overhead associated with common programming abstractions in the context of embedded systems ...
click here for more...
Smart Pointers, Dumb Mistakes
C++ smart pointers promise to make memory management easier—but they also introduce a new world of gotchas, performance quirks, and hidden complexities ...
click here for more...
Building Robust Inter-Process Queues in C++
The C++ standard was written with a single-process worldview. Processes are mentioned once - in a note stating that lock-free atomic operations work across process boundaries ...
click here for more...