Your C++ codebase isn't broken. It's just showing its age.
Raw pointers, callback spaghetti, SFINAE templates nobody can read, printf
scattered through a million lines of production code - if any of that sounds
familiar, this book was written for you.
Modern C++ is a complete, practical guide to migrating
real-world codebases from legacy C++ to C++20, C++23, and C++26 - without
breaking production, losing your team, or spending a year on a big-bang
rewrite that never ships.
What makes this book different:
- Every technique is taught through the problem it solves, not as
an isolated feature
- Every code example compiles and runs - no pseudocode, ever
- Every chapter ends with a Migration Checklist you can apply to your
codebase today
- Real-world case studies from Bloomberg, Meta, Google, Dropbox, and others
show how production teams actually did it
- Covers the full arc: C++20 Concepts, Modules, Coroutines, and Ranges -
then C++23 std::expected, std::format, std::mdspan - then C++26 Reflection
and Contracts
You'll learn how to:
- Audit a legacy codebase and build a migration plan that won't blow up in
production
- Replace SFINAE nightmares with readable, enforceable Concepts
- Kill header files and slash build times with C++20 Modules
- Transform callback hell into clean coroutine pipelines
- Replace raw loops with composable, lazy Range pipelines
- Eliminate entire bug classes with std::expected and smart pointers
- Say goodbye to printf forever with std::format and std::print
- Prepare your codebase for C++26 Reflection and Contracts today
- Execute a full C++17 to C++26 migration with a phase-by-phase playbook
Who this book is for:
Professional C++ engineers with production experience who are ready to
modernise. This is not a beginner book and it is not a reference manual.
It is a field guide for engineers who ship real software and need a concrete,
safe, step-by-step plan to bring their codebases into the modern era.
"Every chapter must leave the reader feeling: I understand this deeply,
I've built something with it, I know where it applies in my codebase, and I
can't wait to read the next one." - David Lane