C++Now 2024
2024-04-29..2024-05-03
Aspen, United States
C++Now ·
[C++Now 2017, C++Now 2018, C++Now 2019, C++Now 2022, C++Now 2023, C++Now 2024, C++Now 2026]
who it's for
C++ developers, build engineers, release engineers, toolchain maintainers, library authors, software architects
topics
project-level interfaces; custom CMake modules; Compiler Explorer workflows; exact-version dependency pins; CI/CD pipelines for C++; JetBrains C++ completion workflow; migrating Make to CMake; template metaprogramming vs virtual; Meyers Singleton thread safety; factory pattern anti-patterns; Boost.Parser parser combinators; parser ergonomics and performance
| title | author | length |
|---|---|---|
| Session Preview | Bret Brown | 14m |
Preview explains why project-level interfaces matter, showing concrete fixes for packaging, builds, and distribution instead of abstract advice. Examples… | ||
| Keynote Session Preview - C++ Painkillers | Anastasia Kazakova | 18m |
Annual C++ Foundation survey data shows the top five pain points are managing dependencies, setting up CI/CD pipelines, build times, CMake pain, and… | ||
| Keynote Session Preview - C++ Painkillers | Anastasia Kazakova | 18m |
C++ tooling still causes the biggest day-to-day pain: the Annual C++ Developer Survey Lite lists managing dependencies, CI/CD, build times, CMake, and… | ||
| Session Preview - Interview With – Katherine Rocha | Katherine Rocha | 10m |
Examines when modern C++ replacements actually recreate old problems by comparing template metaprogramming implementations that mirror polymorphism to the… | ||
| Session Preview - Interview With – Zach Laine | Zach Laine | 16m |
Boost.Parser is a C++17+ parser combinator library that reuses Spirit-style operator DSLs, claims to combine the best of Spirit 2 and X3, and is accepted as a… | ||
| Submarines and Spies | Sherry Sontag | 06m |
Cold War submarines covertly find and tap Soviet undersea telephone lines using a prototype induction cable tap wrapped around cables by divers from a boat… | ||
| Hilbert Hotel - The Grand Reopening | Tobias Loew | 05m |
A hotel changes room rates so nightly incomes follow a rearranged harmonic sequence, producing infinite income but zero tax after applying a specific wiring… | ||
| Reflecting Types in C++17/20 | Patrick Roberts | 06m |
Shows a working technique to reflect C++ types under C++17 by using a front-injection hack that emits meta-info objects as friend functions, then retrieves… | ||
| Debugging Like House - Software Differential Diagnosis | Michael Okyen | 05m |
Apply House-style differential diagnosis to stubborn bugs: list every symptom on a whiteboard, enumerate possible causes, then design tests to rule in or rule… | ||
| Fun? with NTTPs in C++ | Ben Deane | 04m |
Shows how to make non‑structural objects usable as NTTPs by wrapping in a lambda so the value can be extracted via constexpr calls, and demonstrates a small… | ||
| C++ Reflection - Back on Track | David Olsen | 01h 27m |
Proposal P2996 gives compile‑time reflection with a single opaque meta type (std::meta_info), a prefix ^ operator for reflection, consteval meta functions to… | ||
| C++ Coroutines at Scale - Implementation Choices at Google | Aaron Jacobs | 01h 21m |
Google runs C++ coroutines in production to process billions of RPCs/sec and the K3 library trades ergonomics for safety: a marker return type Co forces… | ||
| Keynote: Employing Senders & Receivers to Tame Concurrency in C++ Embedded Systems | Michael Caisse | 01h 32m |
Demonstrates using Intel baremetal senders and receivers library on an ARM dev board (80 MHz core, 256 KB flash, 64 KB RAM) to compose event-driven logic… | ||
| Fast Conversion From Cpp Floating Point Numbers | Cassio Neri | 01h 41m |
Presents a new algorithm called TJaguar that converts binary floats to the shortest round‑trip decimal faster than previous dragons (Grisu, Ryu, Dragonbox… | ||
| C++ Type Erasure Demystified | Fedor G Pikus | 01h 41m |
Explains type erasure by building three concrete implementations: inheritance with virtuals, static-function pointers, and a compiler-like… | ||
| Value Oriented Programming Part V - Return of the Values | Tony Van Eerd | 01h 42m |
Argues for making types behave like values to reduce entanglement and accidental sharing, shows concrete fixes: a camera class trimmed of transient fields, a… | ||
| Expressive Compile-Time Parsers in C++ | Alon Wolf | 01h 18m |
Survey of compile‑time parsers compares actual libraries and implementations: Boost.MetaParse, Lexi, ctpg, CT and experimental macro_rules and YP across… | ||
| C++ Coroutines and Structured Concurrency in Practice | Dmitry Prokoptsev | 01h 30m |
C++20 coroutines get practical tooling: an open source framework Corral implements structured concurrency, interoperates with custom event loops and… | ||
| Investigating Legacy Design Trends in C++ & Their Modern Replacements | Katherine Rocha | 01h 23m |
Compares concrete replacements for legacy patterns: shows classic Singleton, Meyers Singleton, and Monostate examples and argues monostate hides global static… | ||
| Boost.Parser (Part 1 of 2) - A Parser Combinator Library for C++ | Zach Laine | 01h 27m |
Boost.Parser is a new Boost candidate (C++17+) that grafts Spirit 2’s ergonomics onto X3’s modernization, claiming much shorter compile times and safer… | ||
| Boost.Parser (Part 2 of 2) - A Parser Combinator Library for C++ | Zach Laine | 01h 48m |
Boost.Parser is a Boost candidate library for C++17+ that combines Spirit2 and X3 ideas to produce a parser-combinator library with concrete features… | ||
| The Importance of the C++ Build System Target Model | Bill Hoffman | 01h 17m |
Argues that a formal target model — concrete targets with usage requirements and transitive linking — fixes real pain: CMake moves from flag soup to exported… | ||
| C++ Should Be C++ | David Sankel | 01h 29m |
Stack Overflow data shows Rust use among C++ developers rising from ~5% in 2009 to >20% of C++ devs use Rust by 2023, an Android study reports fewer… | ||
| C++26 Preview | Jeffrey Garland | 01h 26m |
C++26 compiles a long list of concrete changes already in the working draft: reflection with ^ and meta functions (opaque meta_info, enumerators, define_class… | ||
| Rappel: Compose Algorithms, Not Iterators - Google's Alternative to Ranges | John Bandela | 01h 19m |
Rappel (RPL) is a Google library that composes algorithms instead of iterators, implementing an eager continuation passing style pipeline that passes values… | ||
| What We’ve Been Awaiting For? - How to Build a C++ Coroutine Type | Hana Dusikova | 01h 01m |
Shows how to build a concrete C++ coroutine type that actually downloads web pages using libcurl multi API, implements a tiny scheduler that tracks running vs… | ||
| Unlocking Modern CPU Power - Next-Gen C++ Optimization Techniques | Fedor G Pikus | 01h 50m |
Covers how CPUs in the last ~10 years move to multi‑die tiles (e.g., 15 cores per tile), ~40B transistors, bigger caches and longer pipelines that make old… | ||
| Reflection Is Good for C++ Code Health | Saksham Sharma | 01h 10m |
C++ gains a compile‑time reflection proposal (P2996R1) with two working implementations (EDG and a Bloomberg clang fork) and a new value‑based API (carrot… | ||
| An Adventure in Modern C++ Library Design | Robert Leahy | 01h 21m |
A file‑based time series database optimized for market data supports live intraday querying and returns an outcome-wrapped update_status (processed, complete… | ||
| Embedded Asynchronous Abstraction C++ - Implementing Senders & Receivers Without an OS | Ben Deane | 01h 32m |
Argues that P2300-style senders/receivers can run on freestanding embedded MCUs with no OS, exceptions, or heap by mapping interrupts to schedulers (timer and… | ||
| Developing Better C++ Code by Isolating Decisions | Michael Okyen | 01h 32m |
Claims that Decision-Making Isolation—pulling branching and algorithms into pure free functions or tiny classes, injecting IO and wiring separately—makes C++… | ||
| Reintroduction to Generic Programming for C++ Engineers | Nick DeMarco | 01h 14m |
Uses a TypeScript sort example to show how to add minimal interface constraints, then reproduces the same ideas in C++ by lifting repeated signatures into… | ||
| Dependency Injection in C++ - A Practical Guide | Peter Muldoon | 01h 29m |
Compares concrete DI techniques applied to a large legacy ticker‑processing codebase and shows which actually work: link-time substitution is brittle and… | ||
| Functional C++ | Gašper Ažman | 01h 47m |
Walks through applying functional patterns to real C++: uses std::optional (Maybe), std::expected (Error), ranges, and a custom validation/Choice monad; builds… | ||
| Keynote: C++ Painkillers for C++ Developers - The Evolution of C++ Tooling | Anastasia Kazakova | 01h 28m |
Annual C++ Developer Survey Lite lists the top five pain points: managing dependencies, CI/CD, build times, CMake, and toolchains/IDEs. Practical fixes include… | ||
| C++11 to C++23 in the C++ Memory Model | Alex Dathskovsky | 01h 33m |
Covers concrete differences from C++11 to C++23: shows compiled assembly on x86/ARM/RISC‑V to prove compilers and CPUs reorder code, demonstrates that volatile… | ||
| Implementing Ranges and Views in C++ | Roi Barkan | 01h 36m |
Covers how to implement range adapters and views in C++: building a closure that returns a view, fixing dangling temporaries by moving into an owning view, and… | ||
| A Deep Dive Into C++ Object Lifetimes | Jonathan Müller | 01h 29m |
Detailed survey of where C++ lifetimes actually start and end, with concrete rules and recent changes: std::start_lifetime_as for safely claiming malloc/mmap… | ||
| Zero-Cost Abstractions in C++ - High Performance Message Dispatch | Luke Valenty | 01h 31m |
Library turns declarative message definitions and Boolean predicates into sum-of-products tables at compile time, then builds indexed lookup structures using a… | ||
| C++ is a Metacompiler | Daniel Nikpayuk | 45m |
Claims C++17+ can metacompile DSLs embedded in string literals into a numeric meta‑assembly which the cctm library translates into constexpr functions usable… | ||
| How Bloomberg Built a Reusable Process For Consensus on Their Massive C++ Codebases | Sherry Sontag | 46m |
Bloomberg establishes reusable rules and tooling to name and register C++ libraries across ~40,000 packages and hundreds of millions of lines: a registry for… | ||
| Backporting C++ Safety | Taylor Foxhall | 01h 19m |
Built BlazingMQ: a large distributed queuing system (seven–eight year codebase processing millions of messages) implemented for C++03 clients. Uses contract… | ||
| C++ Zero Overhead Pass by Value Through Invocable C++ Abstractions | Filipp Gelman | 37m |
Library type erasure like std::function currently forces an extra copy/move when a non‑trivial object is passed by value; the claim is that this can be… | ||
| Guide to Random Number Generation in C++ | Adrien Devresse | 35m |
Argues that the ubiquitous Mersenne Twister default in <random> is a poor fit for large scientific parallel workloads and shows concrete alternatives… | ||
| C++ Overload Inspector - A Tool for Analyzing and Profiling Overloaded Function Calls | Botond Istvan Horvath | 41m |
A clang-based fork that lists overload candidates and gives a step‑by‑step account of why each candidate is viable or eliminated, shows which overload wins… | ||
| Detect C++ Memory Leaks with ALSan: Attachable Leak Sanitizer | Bojun Seo | 41m |
An attachable leak sanitizer built on eBPF uprobe and BCC hooks malloc/free in running Linux processes, saving allocation metadata in kernel space so processes… | ||
| Testability and C++ API Design | John Pavan, Lukas Zhao, Aram Chung | 46m |
Shows concrete patterns: use the pimpl idiom to swap CPU and hardware CRC32 implementations (BlazingMQ) so one test environment covers both, prefer dependency… | ||
| Fun with Flags - C++ Type-safe Bitwise Operations | Tobias Loew | 53m |
Library Boost.Flags implements type-safe bitwise operators for enum-based flags by adding a complementary flag type and ADL-visible operator overloads enabled… | ||
| What Does It Take to Implement the C++ Standard Library? | Christopher Di Bella | 01h 29m |
Explains concrete engineering choices: unit tests, fuzzing, full integration tests by rebuilding OS packages (arranged to use the target stdlib), and… | ||
| Generic Arity: Definition-Checked Variadics in Carbon | Geoffrey Romer | 01h 27m |
Carbon models variadics as definition-checked variadics by representing tuple/pack types as sequences of segments (an explicit repetition count plus an element… | ||
| Unit Testing an Expression Template Library in C++20 | Braden Ganetsky | 01h 20m |
An expression-template parser-combinator called token parser-combinator targets C++20 and parses spans of any value type; a full JSON parser is implemented and… | ||
| Mistakes to Avoid When Writing C++ Projects | Bret Brown | 01h 32m |
Argues C++ projects need explicit contracts beyond language-level APIs and applies design‑by‑contract to project operations, claiming Bloomberg manages tens of… | ||
| How do Time Travel Debuggers Work? - Design and Implementation of a Time Travel Debugger | Greg Law | 01h 29m |
Compares three real systems — rr, TTD, and Undo.io — and shows a live Doom recording that replays a process by capturing an event log plus occasional snapshots… | ||
| Concept Maps using C++23 Library Tech - Indirection to APIs for a Concept | Steve Downey | 01h 12m |
Shows a C++23 library technique that recreates much of lost "concept map" indirection using inline variable templates plus deducing this and CRTP, giving… | ||
| The Most Important API Design Guideline - No, It's Not That One | Jody Hagins | 01h 36m |
Argues that the top API design rule is testability over ease-of-use or raw performance, supported by concrete checks: examine IG, the Standard Library and… | ||
| Security in C++ - Hardening Techniques From the Trenches | Louis Dionne | 01h 34m |
Implementation adds two concrete defenses to Clang/libc++: Standard Library hardening (none/fast/extensive/debug modes, built‑in traps for fast/extensive… | ||
| This is C++: Uncompromised Performance, Undefined Behavior, & Move Semantics | Jon Kalb | 01h 19m |
C++ prioritizes uncompromised performance by letting common operations compile to single machine instructions and putting corner cases off on undefined… | ||
| The C++ Vector Challenge | Lisa Lippincott | 01h 31m |
Proposes a concrete C++ encoding for formal interfaces that embeds pre/postconditions in ordinary code and builds object interface blocks compiled separately… | ||
| Modernizing Finite State Machines in C++ - Empower Simplicity & Boost Performance With std::variant | Amandeep Chawla | 01h 13m |
Implements a turnstile FSM (five states: locked, unlocked, payment processing, success, failed) using std::variant and std::optional, replacing virtual-state… | ||
| Glean: C++ Code Indexing at Meta | Michael Park | 01h 22m |
Glean is a Meta-built indexing platform that uses Clang ASTs, RocksDB and a small query language (Angle) to store deduplicated facts from huge C++ trees plus… | ||
| Closing Keynote: C++ Development Tools: Past, Present and Future | Marshall Clow | 01h 32m |
Survey of C++ tools traces the arc from the 1977 Bell Labs programmers workbench (editor, compiler, linker, make, SCCS) through 1980s IDEs to a modern… | ||
| Designing a Slimmer Vector of C++ Variants | Christopher Fretz | 01h 31m |
Shows a working library that replaces std::vector<std::variant<...>> with a contiguous, bit-packed storage plus compact offset/type metadata, trading some… | ||
| nothing matches | ||