C++ on Sea 2022
2022-07-05..2022-07-07
Folkestone, United Kingdom
[C++ on Sea 2019, C++ on Sea 2020, C++ on Sea 2021, C++ on Sea 2022, C++ on Sea 2023, C++ on Sea 2024, C++ on Sea 2025]
who it's for
C++ developers, library authors, systems developers, software architects, toolchain and compiler engineers, game developers
topics
universal forwarding references; C++20 coroutines; compile-time reflection API; std::execution parallelism; jthread with stop_token; emscripten and WebAssembly bindings; LLVM passes introduction; GDB debugging techniques; std::algorithm best practices; strongly typed physical units; SYCL heterogeneous programming; reducing allocations in containers
| title | author | length |
|---|---|---|
| Announcing C++ on Sea 2022 | Phil Nash, Ben Pluck | 02m |
Announcement confirms C++ on Sea 2022 returns in person in Folkestone, at a waterfront venue with a view of France across the Channel. Conference promises a… | ||
| Keynote: Lightning Updates | Hana Dusikova | 56m |
Claim: use content-addressable storage plus a graph of states and C++20/23 code to turn application-state updates into small, verifiable downloads… | ||
| Universal/Forwarding References - A Key to More Modern C++ | Nicolai M. Josuttis | 01h 27m |
Universal (template T&&) references enable one-template-parameter perfect forwarding via std::forward and reference-collapsing rules, and C++20 makes them… | ||
| An Introduction to Multithreading in C++20 | Anthony Williams | 59m |
Line-by-line practical guide to C++20 concurrency: picks separation of concerns vs scalability as the design axis, demonstrates Amdahl’s law (90% parallelized… | ||
| A Medley of C++ | Walter E. Brown | 01h 32m |
Seven short C++ nuggets: a classification scheme that places every type into 16 type categories and a practical detection idiom using sizeof(T) to test… | ||
| Reflection API for Modern C++ | Matus Chochlik | 01h 18m |
Presents a concrete compile-time reflection API built on the Reflection TS with a Clang fork and a GitHub repo of working examples, including Reflection TS… | ||
| C++ Standard Parallelism | Bryce Adelstein Lelbach | 57m |
Standard C++ already provides portable parallelism: transform_reduce word count shows a single parallel algorithm mapping to CPUs or GPUs; execution policies… | ||
| Windows, macOS & the Web: Lessons from Cross-platform Development at think-cell | Sebastian Theophil | 49m |
Company ported a 12‑year Windows codebase of 700k lines of code to macOS and then to the Web, and reports concrete fixes: custom high‑level C++ abstractions… | ||
| Help, My Team Is Stuck In The 90s | Dave Winterbottom | 47m |
Argues that C++14 modern features can improve readability and safety while still meeting game-performance needs, with concrete examples: using optional for… | ||
| Understanding C++ Coroutines by Example, Part 1 | Pavel Novikov | 01h 01m |
Builds a minimal coroutine library from the ground up: a task + promise type, the five mandatory promise functions, get_return_object, initial/final_suspend… | ||
| Understanding C++ Coroutines by Example, Part 2: Generators | Pavel Novikov | 01h 36m |
Covers concrete C++20 generator implementation: shows a naive generator type with coroutine frame, initial_suspend/final_suspend, promise object and handle… | ||
| To Pass and Return — The Story of Functions, Values and Compilers | Dawid Zalewski | 48m |
Explains that C++17 makes copy elision mandated in C++17 for returned temporaries but real compilers differ: GCC/Clang eliminate copies for trivial and many… | ||
| Taking Static Type-safety to the Next Level: Physical Units for Matrices | Daniel Withopf | 55m |
Presents a full C++ library that encodes per-element physical units and coordinate frames into matrix types, implemented as a thin Eigen binding with row and… | ||
| Compile- and Run-Time Dependency Injection | Marius Feilhauer | 32m |
Compares runtime dependency injection via abstract interfaces to compile-time dependency injection via templates using an alarm clock example wired to… | ||
| Sandbox Games: Using WebAssembly and C++ to Make a Simple Game | Ólafur Waage | 54m |
Shows how to compile C++ to WebAssembly with Emscripten (emcc, emsdk, emrun) to run a sliding‑puzzle (2048/threes style) in the browser, first keeping… | ||
| Aliasing: Risks, Opportunities and Techniques | Roi Barkan | 57m |
Aliasing in C++ causes both correctness failures and big slowdowns: overlapping arguments break a naive in-place min/max and a concat example, a simple… | ||
| A Practical Guide to Loose Coupling | Kris Jusiak | 58m |
Concrete refactors: replace global manager/singletons and long chains like a->b->c with injected objects so code compiles if wrong and tests can fake… | ||
| Contemporary C++ in Action | Daniela Engert | 57m |
Live-coded tiny client/server that decodes video files from a directory and streams frames over TCP using libav (ffmpeg) as a modularized library, SDL2 as a… | ||
| Getting the Most Out of GDB | Mark Williamson, Greg Law | 52m |
Shows how to use GDB’s TUI mode to view source and assembly, Python pretty-printers to format custom C/C++ structs, and a custom prompt that prints time and… | ||
| Beginners Guide to C++'s Best Kept Secret -- std::algorithm | Mike Shah | 56m |
Begins from raw for loops and shows concrete rewrites that use iterators, range for, and std::algorithm to compute the average of the top three positive… | ||
| Computing in the 1960s | Walter E. Brown | 55m |
A walk through actual 1960s tooling and oddities from punch card decks to removable disk packs with 2 million digit capacity and drum memory spinning at 12,500… | ||
| C++ Puzzlers | Yuri Minaev | 52m |
Shows concrete C++ footguns: how the lexer’s maximal munch turns a++ + ++b into a compilation error (post‑increment applied to an rvalue), how overload choice… | ||
| Vocabulary Types for Composite Class Design | Jonathan Coe | 41m |
Proposal of two concrete class templates, polymorphic_value and indirect_value, that let composite classes own objects as values so the compiler can generate… | ||
| Refresher on Containers, Algorithms and Performance | Vladimir Vishnevskii | 58m |
Benchmarks on x86_64 (8 cores) using gcc 10, libstdc++, Google Benchmark and valgrind cachegrind show concrete wins and tradeoffs: vector beats list for… | ||
| OptView2 - Helping the Compiler Generate Better Code | Ofek Shilon | 48m |
OptView2 surfaces compiler optimization remarks from Clang/LLVM as actionable HTML, focusing on failures (not internal logs), splitting large runs, and showing… | ||
| Redesigning Legacy Systems : Keys to Success | Peter Muldoon | 01h 27m |
Argues redesigns win when driven by data not buzzwords: instrument legacy logs, measure peak composition, then target the ~90% hot path. Describes a case… | ||
| How Hard Could It Be? Lessons Learned from Replacing int64 With int64_t. | Andrew Soffer | 46m |
Google spends a year-plus migrating a typedef across ~250M lines to the standard int64_t, first proving the aliases are identical, then fixing ~1,000 template… | ||
| Identifying Common Code Smells | Arne Mertz | 56m |
Shows concrete instances: a 250‑line SFML "tennis" main and a ~100‑line Qt example that reveal long functions and deeply nested control flow; spots magic… | ||
| Coroutines: C++ vs Rust | Jonathan Müller | 52m |
Compares concrete designs: C++ coroutines let a user-provided promise/awaitable resume from the bottom up, own the state machine (heap by default, optimized to… | ||
| Discovering a User-Facing Concept | Christopher Di Bella | 01h 02m |
Claims that concepts must be discovered from algorithms rather than types and demonstrates the process by deriving a ranges left-fold and a ranges reduce with… | ||
| A Practical Approach to Error Handling | Arno Schoedl | 44m |
think‑cell describes a 20‑year, practical error strategy: wrap every OS/API call, collect memory dumps and send them to a server that auto‑opens them in a… | ||
| Strongly Typed Containers | Sandor Dargo | 59m |
Compares four header-only libraries (typesafe / named_type / strong_type / strong_typedef) and finds them functionally similar, MIT/BSL licensed, but each… | ||
| Abstraction: The True Superpower of C++ | Guy Davidson | 01h 18m |
Argues that C++’s real power is disciplined abstraction, not syntactic sugar, and demonstrates concrete techniques: use classes with meaningful verb/noun APIs… | ||
| The Many Faces of Number ⟷ String Conversions | Dvir Yitzchaki | 01h 05m |
Compares concrete APIs (atoi/strtol/sprintf/scanf, std::to_string/stoi, std::stringstream, std::from_chars, fmt/format, scanlib, Boost lexical_cast/convert)… | ||
| What Do You Mean by "Cache Friendly"? | Björn Fahller | 01h 17m |
A 20,000-entry intrusive linked list (≈40 bytes per timer) causes ~70% L1 misses and pegs a control daemon; valgrind/cachegrind and perf pinpoint the… | ||
| How to Rangify Your Code | Tina Ulbrich | 01h 04m |
Shows how to replace loops with actual range tools: uses range-v3 and the standard library plus a company-implemented ranges::to to build containers… | ||
| What’s In A Bit – Designing, Using And Reverse-engineering Binary File Formats | Peter Bindels | 01h 01m |
Covers how individual bits scale to 128-bit identifiers, practical encodings (variable-length integers, run-length and back-reference compression), and… | ||
| Plenary: C++ MythBusters | Victor Ciura | 50m |
Printf family hits global locale locks so replacing sprintf with the fmt library or std::format yields big wins — a macOS case shows about a 4x speedup… | ||
| Making C++ Fun, Safe, and Accessible | Jason Turner | 53m |
Claims that C++ can be fun, safe, and accessible backed by concrete artifacts: puzzle books that teach object lifetime and copy/reference semantics, 331 weekly… | ||
| SYCL: Open Your Code to More Hardware Choices | Igor Vorobtsov | 01h 00m |
Explains using SYCL 2020 and Intel’s DPC++ compiler to run a real-world stencil: the EasyWave tsunami simulation is ported from CUDA/OpenMP, runs on Intel CPUs… | ||
| How Compilers Work: Introduction to LLVM Passes | Andrzej Warzynski | 55m |
Step‑by‑step C++ shows how to implement, CMake and register an out-of-tree plugin for opt, including the minimal "hello world" pass that prints each function… | ||
| Recipes for Reducing Allocations by C++ Containers | Lukas Böger | 01h 01m |
Shows concrete fixes and measurements: use malloc breakpoints in lldb or dtrace to count allocations (one toy push_back example allocates eight times), prefer… | ||
| Midnote: For the Sake of Complexity | Kevlin Henney | 01h 08m |
Argues that most complexity is accidental and avoidable, cites concrete failures: a CORBA-style iterator that forces a network roundtrip per element, the… | ||
| nothing matches | ||