C++ on Sea 2023
2023-06-28..2023-06-30
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 programmers, performance engineers, build and release engineers, tooling and compiler engineers
topics
memory safety and undefined behavior; rvalue lifetime binding issues; nlohmann vs simdjson benchmarking; C++20 modules cross-platform; templates with C++20 and mp-units; C++ ranges and flux iteration model; coroutines intuition in C++; shared libraries on Windows and Linux; CMake mastery and build caching; SYCL for C++20; delta-coding compression in C++
| title | author | length |
|---|---|---|
| Announcing | Phil Nash, Ben Pluck | 02m |
Conference returns in person at Folkestone, the venue sits by the cliff with a cliff view of France across the Channel and the program includes workshops and… | ||
| Keynote: Safety in C++: All the Safeties! | Sean Parent | 54m |
Argues memory safety needs clearer definitions, cites an NSA finding that 70% of vulnerabilities trace to memory issues, and points to SBOM and EU/US rules… | ||
| The C++ rvalue Lifetime Disaster | Arno Schoedl | 37m |
C++ lets rvalues bind to const&, which silently lies about lifetime and produces real dangling references and hard-to-find memory corruption in deployed code… | ||
| Comparing Libraries to Parse JSON Data in C++ | Maja Marevic | 46m |
Benchmarks compare five C++ JSON libraries: nlohmann, RapidJSON, simdjson, glaze and daw_json_link using a complex nested file run 10,000 times. Results show… | ||
| Endnote: AI-Assisted Software Engineering | Bryce Adelstein Lelbach | 01h 06m |
Claims that AI excels at analysis tasks and struggles with creative code generation, demonstrated by a prototype CY diagnostic tool on GitHub that identifies… | ||
| Polymorphism, Cohesion, and Coupling in C++ | Jody Hagins | 01h 16m |
Claims that a 1984 streams design can keep low coupling and high cohesion while avoiding runtime dispatch overhead by moving checks to compilation, implemented… | ||
| A Safer Iteration Model for C++ | Tristan Brindle | 01h 13m |
Flux presents a C++20 library called Flux that replaces pointer-style iterators with index-like first/is_last/read_at/inc primitives, returning safe values… | ||
| How to Build Cpp Interfaces That Are Hard to Use Incorrectly | Andreas Weis | 58m |
Argues that the C++ type system, not wider contracts, prevents common bugs by moving precondition checks to compile time and shows concrete fixes: replacing… | ||
| Shared Libraries in Windows and Linux | Ofek Shilon | 50m |
Compares Windows IAT import/export model (import libs produce import stubs and export stubs) to Linux PLT/GOT lazy binding where the loader (ld‑linux.so) fills… | ||
| C++ Features You Might Not Know | Jonathan Müller | 51m |
Covers concrete, surprising C++ behaviors with examples: array indexing is commutative indexing (a[b] == b[a]); unary + forces integral promotions, decays… | ||
| Special Member Functions in C++ | Kris van Rens | 01h 19m |
Explains exactly when the compiler emits or suppresses constructors, destructor, copy and move ops: declaring any constructor disables the default ctor… | ||
| So, You Want to Use C++ Modules … Cross-Platform? | Daniela Engert | 58m |
Claims that MSVC is production-ready for modules while clang and GCC lag get backed by concrete tests: a client–server demo of only modules (using arcpass and… | ||
| A Guide to Debugging C++ Code: Practical and Interactive Examples | Sebastian Theophil | 44m |
Starts from a crashing C++ program and shows exact tactics: reproduce with stress tests and address sanitizer, use tracing and data breakpoints or reverse… | ||
| What Happens After The Compiler in C++ (How Linking Works) | Anders Schau Knatten | 59m |
Walks through real object files and executables produced by Compiler Explorer and inspects them with objdump and readelf, showing raw bytes, relocations (e.g… | ||
| Typical C++, but Why? | Björn Fahller | 51m |
Shows concrete refactors that stop real bugs: replace plain strings with a sanitized_string type (private data, throwing explicit ctor and explicit conversion… | ||
| Employing Modern C++ for High Performance Delta-Coding Compression | Eduardo Madrid | 01h 07m |
Shows that delta encoding can cut network bytes and end-to-end latency for time-series (market) data by applying information theory, Huffman-style coding and… | ||
| *(char*)0 = 0; - What Does the C++ Programmer Intend With This Code? | JF Bastien | 54m |
Simple program (char)0 = 0; provokes lots of specific behaviors: compilers optimize or trap (for example clang -O2 drops it while GCC sometimes inserts a… | ||
| Implementing Fast Calendar Algorithms: Speeding Date | Cassio Neri | 56m |
Presents concrete, branch-free algorithms that map days-since-epoch to year/month/day using a computational-calendar transform plus integer arithmetic and… | ||
| Building RESTful Interfaces in C++ With nlohmann and cpp-httplib | Kevin Carpenter | 58m |
Builds a working REST API stack in C++ using nlohmann::json and cpp-httplib, with header-only libraries and a small in-house scaffold; code (server + client)… | ||
| An Engineering Approach to Optimising C++ | Dave Rowland | 49m |
Optimises the open-source Tracktion Engine by adding continuous benchmarking (Google Benchmark/Quickbench) run on GitHub Actions + cloud SQL to track… | ||
| New Algorithms in C++23 | Conor Hoekstra | 01h 25m |
C++23 adds concrete range factories and adapters like chunk_by and adjacent_transform and the talk demonstrates solving the competitive “Sushi for Two” problem… | ||
| What's New in Compiler Explorer? | Matt Godbolt | 56m |
Compiler Explorer now hosts nearly 2,000 compilers across 50 languages, runs about 3 million compilations a week and costs roughly $2k/month to run. It adds an… | ||
| Templates Made Easy With C++20 | Roth Michaels | 55m |
Argues that C++20 concepts plus if consteval and fold expressions let teams replace SFINAE-heavy template hacks with readable code, showing concrete rewrites… | ||
| Designing for Concurrency Using Message Passing in C++ | Anthony Williams | 54m |
Argues that pushing all synchronization into a message-passing framework removes large classes of concurrency bugs and OS-level deadlocks, and recommends no… | ||
| A Smooth Introduction to SYCL for C++20 Afficionados | Joel Falcou | 28m |
Overview of SYCL as a C++20-friendly accelerator layer, showing concrete tooling (Intel oneAPI backend, pre-made Docker images), core APIs (buffers and… | ||
| Lightning Talk: Undefined Behaviour in C++ | Cassio Neri | 03m |
A tiny program compiles and runs twice with different observable outputs because the One Definition Rule is broken: two translation units provide conflicting… | ||
| Tips and Tricks for Becoming a CMake Master | Hans Vredeveld | 55m |
CMake code creates a custom FindOracle.cmake to locate Oracle client libs and headers, then runs Oracle’s preprocessor via add_custom_command per source to… | ||
| Coroutine Intuition in C++ | Roi Barkan | 57m |
Coroutines in C++20 are functions that suspend and resume using stackless frames and promises; examples include a Fibonacci generator implemented as a lazy… | ||
| Throwing Tools at C++ Ranges | Tina Ulbrich | 54m |
Compares three implementations (manual C style, C++17 algorithms, C++23 ranges via range-v3) using Google Benchmark, Cachegrind and the Visual Studio CPU… | ||
| Standard C++ Toolset | Anastasia Kazakova | 53m |
C++ tooling landscape narrows to practical pieces: cmake is the de facto build model with a new cmake file API and presets plus a cmake debugger; compilers… | ||
| Why Clean Code Is Not the Norm? | Sandor Dargo | 48m |
Argument: clean code remains rare because it costs attention and time up front, mentorship cannot scale as developer population grows (25→30M developers now… | ||
| Lightning Talk: C++ String Literals Have the Wrong Type | Jonathan Müller | 05m |
String literals decay to arrays so std::ranges::size("abc") == 4 because the null terminator counts. The fix uses UDLs, NTTPs and TMP: a user defined literal… | ||
| Midnote: Why Cpp Loops End | Lisa Lippincott | 01h 23m |
Introduces a concrete scheme that embeds termination reasons in lightly extended C++ interfaces so an algorithm can check them, focusing on stability… | ||
| How to Simulate a Low Latency Exchange in C++ | Benjamin Catterall | 25m |
Concrete recipe for a C++ low‑latency exchange simulator: replay packet captures into a matching engine that implements a central order book with… | ||
| C++ MythBusters Strike 2 | Victor Ciura | 57m |
Asserts that modern tooling — build profilers, Clang build analyzer and VC Perf/Windows Performance Analyzer — can cut C++ build time but project structure and… | ||
| Most Malleable Memory Management Method in C++ | Björn Fahller | 49m |
Shows runtime-swappable allocators and concrete wins: using polymorphic_allocator plus an unsynchronized_pool_resource on a word‑histogram drops allocations… | ||
| Automatic Caching for C++ Builds: Merging Git and the Compiler | Damien Buhl | 19m |
Claim: merge Git with the build system so Ninja and CMake reuse actual build outputs by commit id rather than mtimes. The system uses Git mirroring, binds Git… | ||
| The Power of C++ Templates With mp-units: Lessons Learned & a New Library Design | Mateusz Pusz | 01h 23m |
mp-units v2 rewrites the library: removes the problematic Downcasting Facility, abandons user-defined literals for quantities, and models ISO ISQ quantity… | ||
| A Tour of Polymorphism Techniques in C++ | Andrew Marshall | 57m |
Compares concrete C++ techniques: measured a simple draw loop with virtual functions costing about 88 ms per iteration versus a CRTP compile‑time approach… | ||
| Efficient and Reliable Wrapping of C APIs Using Modern C++ | Vladimir Vishnevskii | 56m |
Case study wraps the C LMDB API into modern C++ using RAII, unique_ptr with custom deleters, and compile‑time configuration to make a read‑only environment… | ||
| The Small Pearls of C++20 | Rainer Grimm | 01h 00m |
Survey of concrete C++20 additions with code demos and gotchas: shows the three‑way compare auto produces three-way compare yields strong/partial ordering… | ||
| Hidden Hazards: Unique Burnout Risks in Tech | Dr. Allessandria Polizzi | 56m |
Tech teams show big numbers: 62% considering quitting and surveys report 56% feel exhausted while 54% of cyber pros report mental‑health harm. The WHO and ISO… | ||
| nothing matches | ||