CppCon 2017
2017-09-24..2017-09-29
Bellevue, United States
CppCon ·
[CppCon 2014, CppCon 2015, CppCon 2016, CppCon 2017, CppCon 2018, CppCon 2019, CppCon 2020, CppCon 2021, CppCon 2022, CppCon 2023, CppCon 2024]
who it's for
C++ developers, library authors, systems programmers, performance engineers, developer tools engineers, build and release engineers
topics
operator <=> three-way comparison; C++ modules and packages; pybind11 Python bindings; compile-time regular expressions; Boost.Asio mqtt_cpp library; Clang LibTooling code indexing; constexpr and type_traits idioms; constructor template argument deduction; Nix functional package manager; Conan C++ package management; reactor vs proactor async models; std::endl flushing and IO
| title | author | length |
|---|---|---|
| 10 Things Junior C++ Devs Don't Get | Victor Ciura | 05m |
Argues that the missing specifics are algorithmic math and concrete practice: read Alexander Stepanov on STL design and older algorithm histories, treat… | ||
| Whitespace ≤ Comments << Code | Walter E. Brown | 12m |
Claim: comments often do more harm than good when they duplicate or contradict code and they outlive fixes. Concrete rules: use assertions to record… | ||
| The End of std::endl | Dietmar Kühl | 03m |
Claim: std::endl does a newline plus a flush and that flush can slow heavy output dramatically. Measurements show a simple test of writing 80‑char lines for a… | ||
| Reactor vs. Proactor | Sean Bollin | 05m |
Clear difference: the reactor uses an event loop and OS calls like select/epoll to wait and dispatch handlers, so code must return quickly or a long blocking… | ||
| C Pointers | John D. Woolverton | 05m |
Starts with memory-managed C-style malloc arrays and a raytracer that uses pointers-to-pointers to store polygons and crashed GCC when a three-way assignment… | ||
| Refactor or die | Mikhail Matrosov | 05m |
A concrete failure example leads the argument: a single review touches 94 files, accumulates 169 comments and consumes 26 hours, causing nightly tests to fail… | ||
| A C++20 Preview: operator <=> | Walter E. Brown | 09m |
A new operator<=> (the three‑way or "spaceship" operator) is being added for C++20 with precedence and associativity defined and library support proposed as… | ||
| Get Productive on Unfamiliar Source Code | Eberhard Gräther | 04m |
A simple UI change that takes three weeks illustrates that developers spend 50–98% of their time reading code and motivates a practical solution: a standalone… | ||
| Pybind11 - Python on Steroids | Jan Plhak | 05m |
Pybind11 is a C++11 header-only library that binds C++ types and functions into Python code it shows a concrete example binding a Point type and a Convex Hull… | ||
| Regular Expressions Redefined in C++ | Hana Dusikova | 04m |
Claims a C++ library that turns regex literals into types at compile time, with a small LL(1) parser that translates patterns into the same type and eliminates… | ||
| Captioning and Translating C++ Videos - PART 1 of 2 | Robin Kuzmin | 05m |
Conference has over 100 sessions and most recordings reach hundreds to thousands of viewers, yet tens to hundreds per presenter can't follow spoken English and… | ||
| Choosing an Abstraction | David Sankel | 05m |
Shows a tiny state machine implemented with an enum to trim and compress spaces and then compares four concrete interfaces: pass-by-reference… | ||
| Introduction to Sharpmake | Nicolas Fleury | 05m |
Sharpmake is now open-source and is a C#-based project generator designed for large C++ codebases, claiming it can convert C++ projects and generate projects… | ||
| The Three Layers of Headers A Curious Discovery | Charles L. Wilcox | 05m |
Claim: any header can be decomposed into three layers of headers — a top layer of forward declarations, a middle interface file with type and free‑function… | ||
| X-Macro: How to avoid repetition | Matthew Avery | 04m |
Shows an implemented pattern that keeps one single source list of enum entries and uses the preprocessor to generate both the enum and string conversion so you… | ||
| Signed Integers: Faster and Corrector | John McFarlane | 05m |
Claim: using signed integers lets the optimizer generate simpler, faster code by relying on signed overflow undefined behavior. Evidence: GCC blog examples and… | ||
| C++ Modules and Packages: Making Dreams Come True | Boris Kolpackov | 05m |
Locates a repository, adds it to a local package config, and creates compiler-specific directories (a clang config then an msvc one), fetches a modularized… | ||
| mqtt_cpp: Boost.Asio based mqtt communication library | Takatoshi Kondo | 05m |
Header‑only Boost.Asio MQTT library claims full MQTT 3.1.1 support with plans for MQTT 5 and exposes both synchronous and asynchronous APIs plus client and… | ||
| When every Microseconds counts: Lessons learned about performance | Nimrod Sapir | 05m |
Claims: measurement beats assumption — a custom pre-allocated memory pool sometimes loses to malloc until hot-segment reuse is fixed, and fixing it yields a… | ||
| Solving a bug via lateral thinking | Giuseppe D'Angelo | 05m |
A bug in Qt's V4 JavaScript engine makes a simple string comparison return true; GDB debugging fails because pointer tagging and optimizations defeat… | ||
| A Composable Command Line Parser | Phil Nash | 05m |
A command-line parser library is extracted from Catch, released as Clara, and rewritten for C++11 to make small parsers composable. Each parser returns… | ||
| std:: exchange Idioms | Ben Deane | 04m |
std::exchange is presented as a small C++14 utility that can be backported to C++11 and used to replace swap in common patterns, saving a move and an extra… | ||
| The design of absl::StrCat... | Jorg Brown | 05m |
absl::StrCat implements a one‑allocation concatenation that avoids the cascade of temporaries created by repeated operator+ by converting inputs to AlphaNum (a… | ||
| Using type_traits and constexpr to make code more readable/debuggable | Jason Jurecka | 05m |
Macro-based reflection for serialization gets replaced by real type traits and constexpr so generated code disappears and debugging becomes possible. The code… | ||
| Making optional optional | Roland Bock | 05m |
Claims that construction choice matters: forwarding make_optional forces a compile time decision so it behaves like make_mandatory, a homemade… | ||
| Post(er)modern C++ | Erik Valkering | 05m |
Claim: a header-only library implements smart references now with zero-overhead semantics by using delegation (inherit from the delegate type) and requires a… | ||
| (don't) Copy Paste All The Things | Gaspar Azman | 04m |
Argument: copying a boilerplate move constructor without noexcept and without thinking about destructor behavior leads to real bugs. Example: operator move… | ||
| Why not Conan (part II)? | Diego Rodriguez-Lopez | 03m |
Five concrete objections repeat and then reverse: building from source is better, supporting multiple build systems is painful in practice, and no public… | ||
| DateTime Programming For Everyone. Everywhere. | Tai Meng | 05m |
The project chooses nanosecond precision to match Oracle and capture high‑volume trading and scientific timestamps, and replaces chrono::duration’s template… | ||
| DynaMix: A New Take on Polymorphism in C++ | Viktor Kirilov | 05m |
A C++ library that actually composes and mutates objects at runtime: objects, dynamic mixins, and unicast/multicast messages form the API, with mixins… | ||
| Throwing Exceptions for Fun and Profit | Jody Hagins | 06m |
Argues that throwing exceptions can match return-code performance by moving construction and throw logic into a noinline/noreturn helper so call sites stay… | ||
| C++ Koans | Tony Van Eerd | 05m |
Seven short koans present concrete developer traps and the exact outcomes so you can choose. Examples include a promised lock-free queue that is not lock-free… | ||
| An Introduction To Shogun Machine Learning Toolbox One For All | Pan Deng | 05m |
Shogun is a C++ machine‑learning toolbox born in 1999 with 300,000 lines of code on GitHub that provides a unified interface to swap SVM implementations and… | ||
| Thoughts on the Metaclass proposal | Gabriel Aubut-Lussier | 05m |
Metaclasses let you enforce constraints, generate members and transform existing members — example: private methods are rejected, the compiler generates a… | ||
| Nix: A functional package manager for your C++ software stack | Adrien Devresse | 05m |
Nix claims reproducibility for C++ stacks by building everything in isolated, sandboxed environments and storing each build under a cryptographic-hashed prefix… | ||
| Constructor Template Argument Deduction Best Practices | Mike Spertis | 06m |
C++17 constructor template argument deduction (CTAD) works but needs rules: use CTAD only when constructors do pure forwarding so code loses visual noise but… | ||
| The Perils of Implementing Code from PDFs | Ben Combee | 04m |
Copying the C-like pseudocode out of the h.265 spec into source files produces surprising failures: a Unicode hyphen ( U+2010 hyphen ) and curly quotes turn… | ||
| quick-bench.com | Fred Tingaud | 04m |
A live micro‑benchmarking site quick-bench.com runs Google Benchmark suites in the browser and shows bar charts; it generates one million random numbers with… | ||
| Programing: The Last 4000 Years | Juanpe Bolívar | 06m |
Argues that programming mirrors Western historical eras and gives concrete markers: classical era: LISP ML Ada Smalltalk with type inference continuations… | ||
| Simple Solutions for High Performance: StaticFlatMap | Daniel D. Duvilanski | 05m |
Claim: replacing std::map with a tiny specialized container yields huge practical wins. Implementation is a StaticFlatMap built as a sorted array with binary… | ||
| Speeding up Preprocessor | Ivan Sorokin | 04m |
Prototype caches final expansions and tracks macro dependencies so a macro’s final replacement is computed once at first expansion and invalidated correctly… | ||
| Heterogeneous System Architecture - Why Should You Care? | Paul Blinzer | 05m |
Heterogeneous System Architecture claims to let one source code target CPU and accelerators and deliver higher performance with lower power by exposing a… | ||
| Calling code w/o headers... | Jorg Brown | 04m |
Shows a concrete way to call a function from a library header you do not have at compile time by exploiting delayed template instantiation and ADL: declare a… | ||
| Transforming C++ Code with DMS | Michael Mehlich | 05m |
Shows a concrete comparison of DMS generalized compiler versus Clang tree rewrites, with the actual transformation rewriting a += to a = a + b written and… | ||
| Face correlation with dlib | Jens Weller | 06m |
A pipeline extracts faces from conference photos using dlib face recognition, converts each face to an N‑dimensional vector, and clusters results with Chinese… | ||
| Universal Memoization Decorator | Victor Komarov | 05m |
A generic C++ decorator implements universal memoization by turning a function into a cached callable using a key built from decayed arguments and a container… | ||
| Trokam, an online search engine developed in C++ | Nicolas Slusarenko | 03m |
Trokam presents a working prototype of an online search engine implemented almost entirely in C++ running on Digital Ocean with Step Two deployed on Amazon Web… | ||
| Fantastic Four, The Invisible "Features" | Siddharth Gupta | 04m |
Four concrete C++ quirks appear with examples and minimal handwaving: URL as case label shows an HTTP prefix becomes a case name and trailing // turns the rest… | ||
| A C++ review Community | Jens Weller | 05m |
A community launches to review C++ libraries with a live r/cpp_review subreddit, a one‑month review window and an upcoming public list of libraries that passed… | ||
| SCM Challenge: Unique Words | Arthur O'Dwyer | 04m |
A coding puzzle asks to print numbers up and down without repeated identifiers so a first approach is a tokenizer that enforces uniqueness, which forces weird… | ||
| Get Involved! | Michael Caisse | 05m |
A long-running informal program teaches kids mechanical design, electronics and programming with 3D printers, CAD/CAM and workshops started 17 years ago… | ||
| The amazing disappearing, reappearing trigraphs... | Paul "TBBle" Hampson | 04m |
Quick history and concrete claims about trigraphs their removal and odd fallout: 2009 UK proposal to deprecate trigraphs leads to a compromise that breaks raw… | ||
| F.21 | Guiseppe D'Angelo | 05m |
Guideline F.21 claims: to return multiple “out” values, return a struct rather than a tuple. Evidence: tuples permit accidental mixing of unrelated returned… | ||
| STATIC_WARN | Morris Hafner | 05m |
When a static_assert would break portability but a compile time warning suffices this shows how to emit one by instantiating a templated warn_if type… | ||
| “Learning and Teaching Modern C++” | Bjarne Stroustrup | 01h 39m |
Argues that teams can write type- and resource-safe ISO C++ today (C++17) without performance loss, and backs that with concrete tools: the C++ Core… | ||
| “C++ as a "Live at Head" Language” | Titus Winters | 01h 31m |
Google runs a monorepo with ~250M lines of C++ and 12,000 active developers and claims C++ can be maintained by building from head rather than pinning… | ||
| “Meta: Thoughts on generative C++” | Herb Sutter | 01h 48m |
Two years of proposals boil down to concrete design sketches and a working prototype that demonstrate naming class categories and generating code at compile… | ||
| “Qt as a C++ Framework: History, Present State and Future” | Lars Knoll | 01h 30m |
26-year evolution of a cross‑platform C++ framework that now serves ~1,000,000 active users and a company with ~250 staff and €32M revenue; claims dual… | ||
| “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid” | Matt Godbolt | 01h 16m |
A quick history and demo: a 2012 bash script grows into Compiler Explorer, a Node.js site that pipes user code to many compilers (GCC/Clang/MSVC via Docker on… | ||
| "Designing (New) C++ Hardware” | Olivier Giroux | 01h 00m |
Claims Volta is built to run C++: memory now uses cudaMallocManaged migrates on demand plus a Linux HMM patch and NVLink + HMM makes memory taste like memory… | ||
| “Programming with C++ Constraints: Background, Utility, and Gotchas" | Walter E. Brown | 01h 03m |
Claims that C++ will adopt compile-time constraints via requires-clauses and that they integrate with existing tools like enable_if and constexpr if… | ||
| “Which Machine Am I Coding To?” | Patrice Roy | 49m |
Explains that C++ targets a formal C++ abstract machine not real hardware, documents the as-if rule that lets compilers remove dead computation (example: three… | ||
| Latest & Greatest in Visual Studio for C++ developers | Steve Carroll, DANIEL MOTH | 01h 02m |
Visual Studio 2017 adds concrete upgrades: compiler conformance finishes C++11/14 and targets full C++17 by the 15.6 update, with 15.5 preview adding two‑phase… | ||
| “New standards to the rescue: the view through an IDE’s glasses” | Anastasia Kazakova | 31m |
IDE vendors report a hard correctness vs performance tradeoff when parsing real C++: a 9,000-developer survey shows mixed standard adoption and slow migration… | ||
| “The Quiet Little Gem in Modern C++: <system_error>” | Charles Bay | 01h 14m |
Claim: std::error_code is the right, tiny (≈16‑byte) handle for error interchange — use enumerations as the contract and libraries implement an error_category… | ||
| “C++ Development with Visual Studio Code” | Rong Lu | 01h 01m |
Built a console calculator from scratch in 20-minute live build that compiles with GCC and runs under the integrated terminal, then debugs with GDB/LLDB using… | ||
| “Modern C++ Interfaces..." | Stephen Dewhurst | 56m |
Argues that richer C++ features produce simpler, more robust interfaces by embedding policy and judgment into code; demonstrates replacing a naive memcpy with… | ||
| “Coroutines: what can't they do?” | Toby Allsopp | 48m |
The C++ Coroutines TS (N4680) adds three keywords and customization points and the talk shows how the compiler transforms coroutines into a coroutine state, a… | ||
| “constexpr ALL the Things!” | Ben Deane, Jason Turner | 01h 10m |
Builds a real constexpr JSON parser and even a constexpr regex engine using constexpr lambdas and a user-defined literal template (GCC/Clang extension)… | ||
| “Time Travel Debugging..." | J. McNellis, J. Mola, K. Sykes | 01h 01m |
A Windows reverse debugger that captures a record/replay trace of a process and lets WinDbg replay it forwards and backwards, query it (DX / LINQ-style) and… | ||
| “ EA’s Secret Weapon: Packages and Modules” | Scott Wardle | 56m |
EA has run a packages system for 14+ years that behaves like Ruby Gems or Rust cargo, hosting thousands of packages so a package download pulls all… | ||
| “Almost Unlimited Modern C++ in Kernel-Mode Applications” | Billy Baker | 51m |
Describes running Modern C++ on RTX kernel-mode where Visual C++ lacks DLL support and standard headers yield unresolved externals; fixes include providing a… | ||
| Captioning and Translating C++ Videos- Part 2 of 2 | Robin Kuzmin | 24m |
A community site at cppvap.wikidot.com coordinates English caption creation and translations for C++ conference videos using YouTube’s community contributions… | ||
| “When a Microsecond Is an Eternity: High Performance Trading Systems in C++” | Carl Cook | 01h 00m |
Describes concrete, production-proven fixes: replacing scattered error handlers nets ~100–200 ns, avoiding virtuals via template-based configuration removes… | ||
| “Unicode Strings: Why the Implementation Matters” | Barbara Geller, Ansel Sermersheim | 59m |
CsString is a standalone, BSD-licensed Unicode string library that tags every string with its encoding, exposes code-point iterators, and converts between… | ||
| “Is Parallel Programming still hard? PART 1 of 2” | P. McKenney, M. Michael, M. Wong | 59m |
Argues that concurrency is now ubiquitous and solvable by better abstractions and tooling, not mysticism; compares performance, productivity and generality as… | ||
| “Is Parallel Programming still hard? PART 2 of 2” | P. McKenney, M. Michael, M. Wong | 48m |
Survey of hardware and algorithms that explains why cachelines, store buffers and speculative execution force specific code choices and shows concrete… | ||
| “Deconstructing the OS: The devil’s In the side effects” | Alfred Bratterud | 58m |
IncludeOS builds bootable ELF C++ unikernels with a minimal libc backend (implemented a write syscall to a serial driver) and a one‑liner tool that boots… | ||
| “An allocator model for std2” | Alisdair Meredith | 57m |
Proposes replacing the many C++ allocator models with a single pmr-like runtime model that keeps allocators out of the type system, stashes a memory_resource… | ||
| “A modern formatting library for C++” | Victor Zverovich | 01h 01m |
A modern C++ formatting library (fmt) implements a Python-like brace syntax and a std proposal P0645R0, uses variadic templates plus a compact type-erasure arg… | ||
| “Faster Delivery of Large C/C++ Projects with..." | D. Rodriguez-Losada Gonzalez | 01h 08m |
CI that uses Conan plus Jenkins and Artifactory to build only the binaries that actually need rebuilding, using the dependency graph to trigger downstream jobs… | ||
| “Building Better Worlds: Developing a Procedural City Tool for Alien..." | Alan Bucior | 30m |
Machi is a custom procedural city tool built for Alien: Covenant that uses a C++ core for road, lot and placement algorithms, a Python UI for artist control… | ||
| “Esoteric Data Structures and Where to Find Them” | Allan Deutsch | 30m |
Describes four concrete tools and their trade-offs: slot map gives true constant-time insert/lookup/erase using a generation counter plus free list to avoid… | ||
| “Enhanced Support for Value Semantics in C++17” | Michael Park | 01h 00m |
Covers concrete C++17 additions: std::optional (holds T in-place, adds nullopt_t, value_or copies/moves the contained T), std::variant (type-safe union, stores… | ||
| “C++ atomics, from basic to advanced. What do they really do?” | Fedor Pikus | 01h 14m |
Benchmarks show a mutex with a per-thread local accumulator outruns naive atomic increments: the “wait-free” atomic-plus-equals version runs slower and scales… | ||
| “Migrating a C++03 library to C++11 case study: Wt 4” | Roel Standaert | 24m |
Wt 4 migrates a large C++03 codebase to C++11, replacing boost.signals2 with a lambda/std::function/std::bind based implementation, swapping Boost.Date_Time… | ||
| “From security to performance to GPU programming..." | Sergey Zubkov | 27m |
Shows that secure allocator wipes pages and locks them to keep secrets out of swap, demonstrates pool allocators (boost PMR and custom pools) that stop… | ||
| “Enough x86 Assembly to Be Dangerous” | Charles Bailey | 31m |
Introduces practical x86 by showing Compiler Explorer (Godbolt) and disassemblers (objdump, gdb, Visual Studio) and walks through registers, virtual address… | ||
| “folly::Function: A Non-copyable Alternative to std::function” | Sven Over | 31m |
A replacement for std::function that stores move-only callable objects and is deliberately non-copyable, folly::Function is implemented like std::function but… | ||
| “Fuzz or lose..." | Kostya Serebryany | 31m |
Fuzzing is presented as a low-effort, high-impact practice: add a small fuzz target (a function that consumes a byte array), compile with instrumentation and… | ||
| “Grill the Committee” | Louis Dionne, Eric Niebler, Gor Nishanov, Gabriel Dos Reis, Bjarne Stroustrup, Herb Sutter | 01h 28m |
Panel answers where each proposal stands: Concepts partly in C++20 with unfinished pieces, Ranges TS published and still trimming library bits, Modules on PDTS… | ||
| “How to Write Effective Documentation for C++ Libraries..." | Robert Ramey | 01h 02m |
GitHub survey data (5,500 respondents across ~3,800 projects) shows 93% frustrated by poor docs; the claim is that writing docs alongside code catches design… | ||
| “Design Patterns for Low-Level Real-Time Rendering” | Nicolas Guillemot | 55m |
New GPU APIs like Vulkan Direct3D 12 and Metal give fine control but add complexity; the talk claims patterns that cut that complexity by an order of magnitude… | ||
| “The Nightmare of Move Semantics for Trivial Classes” | Nicolai Josuttis | 57m |
Examines a simple Customer class with three members and counts actual string allocations for various constructor designs: naive const-ref approach produces up… | ||
| “Everything You Ever Wanted to Know about DLLs” | James McNellis | 01h 02m |
Builds a tiny Hello.dll and PrintGreeting.exe to show exactly what ends up in a Windows PE: DOS stub, COFF header, sections (.text, .rdata), export directory… | ||
| “Function default arguments: Slingshot or Shotgun?” | Michael Price | 01h 01m |
Function default arguments cause concrete pitfalls: names are bound at declaration, evaluated at call, multiple declarations merge defaults but the first… | ||
| “Mocking Frameworks considered harmful” | Peter Sommerlad | 01h 01m |
Argues that common C++ mocking frameworks (GoogleMock, Trompeloeil) introduce macro-heavy DSLs, late runtime verification on object destruction, and fragile… | ||
| “Cross-Platform Apps with Dropbox’s Djinni..." | Stephen Spann | 49m |
Demonstrates using Dropbox’s Djinni to generate C++, Objective‑C and Java bridge code from a single Djinni IDL so one C++ library provides Hello World… | ||
| “dynamic_cast From Scratch” | Arthur O'Dwyer | 59m |
Builds a complete, bug‑free reimplementation of dynamic_cast using the Itanium C++ ABI and a small set of nonportable helpers, exposes where compilers waste… | ||
| “MPark.Patterns: Pattern Matching in C++” | Michael Park | 01h 00m |
Library called MPark.Patterns implements pattern matching in C++17 as a header-only API using structured bindings, apply, visit and custom traits… | ||
| “Using Modern CMake Patterns to Enforce a Good Modular Design” | Mathieu Ropert | 58m |
Argues that using modern CMake target APIs enforces modular design by making dependencies explicit, avoiding flag leaks, and catching circular or hidden links… | ||
| “Multithreading is the answer. What is the question? (part 1 of 2)” | Ansel Sermersheim | 47m |
Explains concrete multithreading patterns: use of std::future/std::promise as ticket pairs, moving ownership with unique_ptr to avoid shared state, and passing… | ||
| “Concurrency, Parallelism and Coroutines” | Anthony Williams | 01h 05m |
C++17 adds parallel overloads for ~100 algorithms via execution policies (seq, par, par_unseq) so algorithms like for_each, transform_reduce and sort can run… | ||
| “Recreational C++” | Alisdair Meredith | 01h 03m |
A series of small C++ experiments implements and tests type traits, tuples/pair reworkings, and coding-style probes, with concrete techniques and outcomes… | ||
| “CNL: A Compositional Numeric Library” | John McFarlane | 01h 00m |
CNL presents a composable numerics library that gives zero-cost abstractions over integers: fixed_point adds a binary radix to an integer, multiplication… | ||
| “Agent based class design” | Odin Holmes | 59m |
Proposes decomposing classes into small agents that publish capabilities and requirements and uses C++14 template metaprogramming to auto-wire them so valid… | ||
| “Multithreading is the answer. What is the question? (part 2 of 2)” | Ansel Sermersheim | 50m |
Argues that multithreading is manageable by concrete abstractions: implements libGuarded (guarded, shared_guarded, ordered_guarded, deferred_guarded) and then… | ||
| “Using Functional Programming Patterns..." | Jeremy Demeule, Quentin Duval | 55m |
Shows a functional design that replaces regex-and-if routing with pure functions: paths as URI→optional<params>, handlers as (request, params)→response, routes… | ||
| Designing A Feature That Doesn't Fit | Patrice Roy | 51m |
A concrete problem is controlling per-thread parameters like stack size when the C++ abstract machine has no defined “stack,” so the working approach adds an… | ||
| “Local ('Arena') Memory Allocators (part 2 of 2)” | John Lakos | 01h 02m |
Four targeted benchmarks compare the platform global allocator, tcmalloc/jemalloc, and local strategies (monotonic, multipool, composite) using real containers… | ||
| “Postmodern C++” | Tony Van Eerd | 51m |
Argues that the useful C++ move is concrete: split logic into small subroutines (citing a two‑page 1951 paper), so code sections can be worked on and tested in… | ||
| “Practical C++17” | Jason Turner | 01h 01m |
Porting a 25k-line header-only project, ChaiScript, to C++17 yields concrete wins and traps: class template deduction guides collapse dozens of overloads and… | ||
| “Hands-On With Abseil” | Titus Winters | 59m |
Introduces Abseil as Google’s portable C++ library set with concrete compatibility rules: a target five-year support window, Bazel as the build truth with… | ||
| “Tools from the C++ eco-system to save a leg” | Anastasia Kazakova | 52m |
Survey of concrete C++ tooling that reduces real errors and maintenance cost: recommends using clang-format for deterministic style (but warns its fuzzy parser… | ||
| Class Template Argument Deduction: A New Abstraction | Zhihao Yuan | 48m |
Class template argument deduction (CTAD) in C++17 claims to be more than keystroke savings: it creates a new abstraction where a template-name-plus-parentheses… | ||
| Delegate this! Designing with delegates in modern C++ | Alfred Bratterud | 58m |
Showcases a header-only delegate implementation that matches C function pointer speed and interoperates with std::function, used to wire IncludeOS’s IP stack… | ||
| ThinLTO: Scalable and Incremental Link-Time Optimization | Teresa Johnson | 01h 02m |
Whole-program optimization is implemented as ThinLTO inside LLVM: each .o emits a small summary, the linker builds a combined index, makes import/inlining… | ||
| Web | C++ | Lukas Bergdoll | 41m |
Small voting webservice is implemented with WebSockets and FlatBuffers, showing end-to-end code and benchmarks: uWebSockets: ~2 MB memory for 10,000 concurrent… | ||
| Seventeenification: Porting sqlpp11 to C++17 | Roland Bock | 51m |
Report on porting sqlpp11 to C++17: actual code changes replace kludgy constexpr char arrays with inline variables and auto non-type template parameters… | ||
| Bringing Clang-tidy Magic to Visual Studio C++ Developers | Victor Ciura | 01h 01m |
A 2.5 million‑line Windows C++ codebase across 134 Visual Studio projects compiles with Clang after a multi‑month effort that introduces a configurable… | ||
| API & ABI Versioning... | Mathieu Ropert | 01h 00m |
Defines API vs ABI by concrete effects: symbol mangling changes when argument types change, struct size/alignment and member order change binary layouts, and… | ||
| 10 Core Guidelines You Need to Start Using Now | Kate Gregory | 01h 03m |
Picks ten actionable C++ Core Guidelines and shows concrete fixes: use in-class member initializers to avoid inconsistent defaults, prefer a default argument… | ||
| Boost Your Program’s Health by Adding Fibers to your Coroutine | David Sackstein | 01h 04m |
Compares stackless Coroutine TS (co_yield/co_await) and stackful Boost.Coroutine2, then shows integration with Boost.Asio and the Boost.Fiber scheduler. Builds… | ||
| Driving Into the Future With Modern C++: A Look at Adaptive Autosar | Jan Babst | 57m |
Adaptive AUTOSAR adopts C++14 as language of choice and ships a publicly available guideline set linked to the Adaptive AUTOSAR release that traces rules to… | ||
| Naivety of Creating Cross-Platform, Modern C++ Libraries... | Jonathan Henson | 58m |
AWS SDK for C++ targets C++11, uses CMake and a no dependencies philosophy (libcurl/OpenSSL on Unix, commoncrypto on Apple, WinHttp/Bcrypt on Windows), ships… | ||
| C++ Templates Revised | Nicolai Josuttis | 01h 01m |
Second edition integrates Modern C++ and shows concrete fixes and patterns for real code: use inline constexpr static members to avoid ODR linker errors for… | ||
| Local ('Arena') Memory Allocators (part 1 of 2) | John Lakos | 01h 00m |
Local, subset-focused allocators outperform global new/delete and std::allocator in measured systems, with one reported case cutting a 10‑second reclamation to… | ||
| Read, Copy, Update, then what? RCU for non-kernel programmers | Fedor Pikus | 01h 08m |
RCU implements a one-writer RCU publishing protocol: readers do atomic acquire-loads and writers prepare copies then atomically swap the root, deferring frees… | ||
| Undefined Behavior in 2017 (part 1 of 2) | John Regehr | 49m |
Undefined behavior (UB) lets compilers assume impossible conditions, and modern optimizers increasingly turn those assumptions into surprising breakage… | ||
| Undefined Behavior in 2017 (part 2 of 2) | John Regehr | 26m |
Recent years deliver practical defenses: AddressSanitizer finds heap/stack/out-of-bounds issues fast, UndefinedBehaviorSanitizer catches signed/unsigned… | ||
| Building C++ Modules | Boris Kolpackov | 01h 07m |
Modularized a real build2 utility (≈30 modules, unit tests) and sees 2.5x–3x faster builds with Clang and a modularized libstdc++; compilers emit a binary… | ||
| A Test a Day Keeps Your Manager Away! | Rian Quinn | 01h 01m |
A concise how-to that wires C++ analysis into CI by building a hello world CI project that actually runs on Travis CI and AppVeyor and pulls in… | ||
| Type Punning in C++17: Avoiding Pun-defined Behavior | Scott Schurr | 01h 05m |
C++17 rules which type-punning idioms are undefined and which are tolerable: the talk shows that casting between unrelated pointers or mutating non-mutable… | ||
| Game Audio Programming in C++ | Guy Somberg | 51m |
Shows how to get real-time game audio working with concrete numbers and code: a 25‑line FMOD example plays sound, a 250‑line engine adds 3D and jukebox… | ||
| Compile-time reflection, Serialization and ORM | Yu Qi | 36m |
Describes implementing compile-time reflection in Modern C++ using void_t, tuple, index_sequence, variadic templates, constexpr, macros and C++17 features… | ||
| Web | C++ | Lukas Bergdoll | 41m |
Compares three C++ WebSocket stacks by building a working straw‑poll service that uses FlatBuffers for zero‑copy messages and a static HTML/JS client; measures… | ||
| Building for the Best of Us: Design and Development with Kids in Mind | Sara Chipps | 58m |
Builds a programmable friendship bracelet called Jewelbots that runs C++ firmware, uses the nRF51822 BLE chip and is coded via the Arduino IDE, shipped from… | ||
| Reflection | Andrew Sutton | 01h 01m |
Static compile-time reflection for C++ aims to turn declarations into usable values for metaprogramming and to project those values back into syntax; two… | ||
| Practical Patterns with the Networking TS | Michael Caisse | 01h 01m |
Networking TS is stable, implemented on GitHub and built on Boost.Asio, and the talk walks through concrete patterns and gotchas: synchronous stream examples… | ||
| Effective Qt (2017 edition) | Giuseppe D'Angelo | 01h 01m |
Recommendation: prefer std::vector/map/etc for business logic because Qt containers are older, slower, lack allocators/emplace/node APIs and still require… | ||
| Make Classes Great Again! (Using Concepts for Customization Points) | Vinnie Falco | 44m |
Builds a reusable HTTP message class that lets callers swap body and header implementations and allocators, demonstrating static write/read customization for… | ||
| Reader-Writer Lock versus Mutex - Understanding a Lost Bet | Jeffrey Mendelsohn | 42m |
A controlled Linux benchmark simulates back-to-back access to a shared map (load ≈300 math ops) and compares do-nothing, a single atomic operation, pthread… | ||
| The Asynchronous C++ Parallel Programming Model | Hartmut Kaiser | 01h 07m |
Proposes an asynchronous C++ model implemented as HPX that turns code into dependency trees via futures and continuations (when_all / co_await), uses a… | ||
| Mix Tests and Production Code With Doctest... | Viktor Kirilov | 51m |
doctest is a single-header C++ test framework that actually ships a tiny interface and a separate implementation block so including it everywhere costs ~20 ms… | ||
| Practical Techniques for Improving C++ Build Times | Dmitry Panin | 56m |
Facebook shrinks C++ builds from hours to about five–ten minutes with a mix of tooling and code changes: use Buck for reproducible, content-addressed builds… | ||
| How to Write a Custom Allocator | Bob Steagall | 01h 04m |
Explains how to implement C++14/17 allocators by showing the exact plumbing: required member functions (value_type, allocate, deallocate, converting ctor), how… | ||
| A Tour of Deep Learning With C++ | Peter Goldsborough | 55m |
Overview of concrete results and tools: demonstrates GANs and convolution math, implements a convolution with cuDNN and MKL, and shows a working edge‑detection… | ||
| C++ and Persistent Memory Technologies, Like Intel's 3D-XPoint | Tomasz Kapela | 01h 08m |
An open source C++ API and library for byte-addressable persistent memory (works with Intel-style DIMMs and maps via DAX/ODAX) that implements undo-log… | ||
| Naked coroutines live (with networking) | Gor Nishanov | 01h 04m |
Shows how C++ Coroutines TS plus the Networking TS can be used to build an async TCP server by live-coding two approaches: an easy adapter that uses… | ||
| LauncherOne rocket with C++ engine | Diego Franco | 01h 02m |
Description of the LauncherOne autonomous flight safety software: C++ codebase for an aircraft-launched rocket that must meet FAA safety constraints, uses… | ||
| So, you inherited a large code base... | David Sankel | 55m |
Describes converting a huge legacy C++ codebase into modern shape by automation, measurement, and staged migrations rather than one big rewrite. Demonstrates… | ||
| Ways to Handle Non-blocking Returns in Message-passing Programs... | Sergey Ignatchenko | 59m |
Compares a concrete purchase-by-reply example against eight ways to handle non-blocking returns, showing actual code shapes from message-passing plumbing and… | ||
| The Holy Grail! A Hash Array Mapped Trie for C++ | Phil Nash | 51m |
Proposes a Hash Array Mapped Trie (HAMT) that gives persistent structural sharing so copies cost two integers and depth for 15M items drops from ~24… | ||
| Optimizing compilation times with Templates | Eddie Elizondo | 29m |
Facebook’s Thrift RPC code generates huge per-field serializers so template instantiation dominates build time; measuring with -ftime-report and the Templight… | ||
| Understanding the runtime behaviors of C++ programs using uftrace tool | Honggyu Kim | 30m |
uftrace instruments binaries using compiler-provided function hooks to record every call, arguments and return values without source changes, emits console… | ||
| Inside the Qt Object Model | Simon Hausmann | 30m |
A small calculator app demonstrates that Qt implements signals as generated functions so emit is a normal function call which packs parameter addresses into a… | ||
| Howling at the Moon: Lua for C++ Programmers | Andreas Weis | 33m |
Lua is an embeddable, tiny scripting language whose full runtime can be as small as 180 KB binary with a short reference manual and only eight basic data… | ||
| Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step | Matt Kulukundis | 01h 00m |
A new hash table called SwissTable implements a 2-level, N-way associative probing design with per-slot control bytes (seven-bit H2 tags) packed in 16-byte… | ||
| Microcontrollers in Micro-increments... | Mike Ritchie | 01h 01m |
Argues that test-driven development plus CI can make microcontroller work faster and safer and demonstrates it on a custom washing-machine board; uses CATCH… | ||
| Fantastic Algorithms and Where To Find Them | Nicholas Ormrod | 47m |
Describes concrete, deployable techniques: Boyer-Moore majority and its 1/k generalization for heavy hitters used to throttle DOSy callers (variant run per… | ||
| Postmodern immutable data structures | Juan Pedro Bolivar Puente | 01h 06m |
Library Immer implements persistent vectors using Relaxed Radix Balanced Trees with a 32-way branching factor (≈7 levels for 32-bit indexes) and an embedding… | ||
| Traveling the Solar System with C++: Programming Rocket Science | Juan Arrieta | 54m |
Explains how production-grade C++ replaces legacy Fortran by modeling exact forces, frames, and ephemerides, using MONTE/BOA binary object archive for… | ||
| Higher-order Functions in C++: Techniques and Applications | Michał Dominiak | 01h 02m |
Argues that std::function’s common implementation forces unnecessary indirections and copyability, demonstrates a type-erasure implementation using a stored… | ||
| What C++ developers should know about globals (and the linker) | Nir Friedman | 35m |
Demonstrates a reproducible segfault when an executable links a static library and a shared library that both provide the same global, showing the constructor… | ||
| End-to-end Deadlock Debugging Tools at Facebook | Kenny Yu | 28m |
Facebook builds four concrete tools: folly::Synchronized to force smaller critical sections and encode lock ownership in types, ThreadSanitizer run on CI and… | ||
| A Type, by Any Other Name | Jon Cohen | 46m |
Google's C++ library team uses type aliases to migrate millions of lines non-atomically: create a new implementation class, make old names alias the new one… | ||
| A Soupçon of SFINAE | Arthur O'Dwyer | 01h 01m |
A compact cookbook of concrete SFINAE recipes showing what compiles and what breaks: using void_t trick and decltype(declval()) for expression SFINAE to… | ||
| An Interesting Lock-free Queue - Part 2 of N | Tony Van Eerd | 01h 05m |
Detailed walkthrough of a lock-free, mostly-contiguous circular queue that handles integers and aims to be multi-producer, multi-consumer and growing and… | ||
| Tools and Techniques To Stay Up-to-date With Modern C++ | Ingve Vormestrand | 41m |
Practical ways to keep up: use Docker containers for isolated compilers and builds so you can try GCC/Clang versions without polluting the system; write tiny… | ||
| I Wish I Could Use C++ 1x/y/z | Joel Falcou | 55m |
Demonstrates how to reproduce C++14/17 features on C++11/14 by concrete recipes: generic/variadic lambdas via an poly overload aggregator that composes… | ||
| C++17 Parallel Algorithms | Dietmar Kühl | 57m |
C++17 adds standardized parallel algorithms that accept execution policies (seq, par, par_unseq) and require element access functions to be race free… | ||
| There Will Be Build Systems: I Configure Your Milkshake | Isabella Muerte | 58m |
C++ build systems still force users into ad hoc setups: Make replacements like Ninja exist, meta systems like CMake and Meson are common (Meson admits only one… | ||
| Performance Benchmarking with Celero | John Farrier | 45m |
Small C++11 library Celero adds microbenchmarks to projects and produces CSV/JUnit/archived results for CI; it runs 10,000 samples with inner loops (example… | ||
| Allocators: The Good Parts | Pablo Halpern | 01h 01m |
Argues that C++17’s pmr model makes allocators practical, showing how to derive a memory resource (override do_allocate/do_deallocate/do_is_equal), wrap it in… | ||
| C++ Exceptions and Stack Unwinding | Dave Watson | 51m |
Measures actual throw cost by tracing from cxa_throw through unwinder into the Itanium ABI and compares implementations: libgcc (8-entry cache)… | ||
| Designing a Unified Interface for Execution | Gordon Brown | 01h 03m |
A unified C++ execution proposal defines concrete components (instruction stream, lightweight agents, executor, execution resource/context) and four distinct… | ||
| Free Your Functions! | Klaus Iglberger | 01h 02m |
Argues that C++ code favors non-member, non-friend free functions because they reduce coupling, improve encapsulation, follow SRP and Open‑Closed, enable reuse… | ||
| Curiously Recurring C++ Bugs at Facebook | Louis Brandy | 52m |
Facebook C++ history shows concrete failure modes: using map's square‑bracket inserts missing keys and silently returns zero; folly's findWithDefault variants… | ||
| Going Nowhere Faster | Chandler Carruth | 01h 01m |
Benchmark shows random-index probes reveal cache boundaries on an AMD Epyc: L1D ≈ 64 KB, L2 ≈ 512 KB, L3 ≈ 16 MB, with throughput falling from ~18 GB/s to ~15… | ||
| Customizing the Standard Containers | Marshall Clow | 01h 00m |
Covers how standard containers are actually customized: allocator objects versus allocator types, allocator responsibilities (allocators… | ||
| Multidimensional Index Sets for Data Locality in HPC Applications | Tobias Fuchs | 58m |
Multidimensional index-set views in the DASH C++ library expose separate canonical and local index spaces, let algorithms compute intersections and contiguous… | ||
| The Future of Texture Compression | Rich Geldreich, Stephanie Hurlburt | 38m |
Basis is a C++ transcoding system that produces a header-only transcoder which converts a single .basis file at runtime into existing GPU block formats (ETC1… | ||
| C++/WinRT and the Future of C++ on Windows | Scott Jones, Kenny Kerr | 01h 05m |
C++/WinRT is a standard, header-only C++ projection that replaces C++/CX and compiler extensions, delivered by a tool called cppwinrt.exe that turns WinMD… | ||
| Adding C++ modules-ts to the GNU Compiler | Nathan Sidwell | 01h 00m |
Implements the Modules TS inside GCC by producing a serialized front‑end AST as a Binary Module Interface (BMI) cache rather than reparsing headers, adds a new… | ||
| My Little Object File: How Linkers Implement C++ | Michael Spencer | 48m |
Walks a C++ translation unit through actual object formats and tools, showing how ELF, MachO, COFF encode sections, symbols and relocations and how the linker… | ||
| Meta | Andrew Sutton | 01h 01m |
Reports a Clang-based prototype (about a month and a half of work, with a tokenized proof-of-concept that took ~4 hours) that implements compile-time constexpr… | ||
| C++17 ParallelSTL: A Standardization Experience Report for CPU and GPU on SYCL | Gordon Brown, Ruyman Reyes, Michael Wong | 01h 10m |
Report describes a working ParallelSTL implementation that runs standard execution policies on CPUs and on GPUs via SYCL execution policy, with source on the… | ||
| How to break an ABI and keep your users happy | Gennadiy Rozental | 50m |
Google had long used a custom global string implementation (copy‑on‑write vs SSO) that costs about 2% slowdown and becomes unmanageable across a growing… | ||
| Undefined Behaviour is awesome! | Piotr Padlewski | 54m |
Covers concrete examples where undefined behavior lets the optimizer rewrite or remove code: integer overflow enables assuming x+1>x, a null dereference leads… | ||
| Runtime Polymorphism: Back to the Basics | Louis Dionne | 01h 08m |
Explores concrete alternatives to inheritance by implementing a policy-based type erasure (the Dyno library) that supports remote storage, small‑buffer… | ||
| C++17 Features (part 1 of 2) | Bryce Adelstein Lelbach | 49m |
C++17 consolidates practical language changes: structured bindings let auto [x,y] = point3 to name members (and work with tuples/arrays); selection statements… | ||
| C++17 Features (part 2 of 2) | Bryce Adelstein Lelbach | 54m |
C++17 adds concrete library features: string_view: non-owning pointer+length avoids copies, but becomes invalid if the source moves; std::optional: no-heap… | ||
| nothing matches | ||