C++11 to C++26 On The Fly
June 7, 2026 · View on GitHub
Table of Contents
Part I — Language Core
Enhancements to the language itself: how you declare and deduce types, and what happens at runtime.
- Chapter 01: Towards Modern C++
- 1.1 Deprecated Features
- 1.2 Compatibility with C
- Further Readings
- Chapter 02 Language Usability Enhancements
- 2.1 Constants
- nullptr
- constexpr
- 2.2 Variables & Initialization
- Conditional Statement
- Initializer List
- Structured binding
- 2.3 Type Deduction
- auto
- decltype
- Tail return type
- decltype(auto)
- 2.4 Control Flow
- if constexpr
- Range-based for loop
- 2.5 Templates
- External templates
- The ">"
- Type alias templates
- Default template parameters
- Variadic templates
- Fold expression
- Non-type template parameter deduction
- 2.6 Object-oriented
- Delegate constructor
- Inheritance constructor
- Explicit virtual function overwrite
- override
- final
- Explicit delete default function
- Strongly typed enumerations
- 2.1 Constants
- Chapter 03 Language Runtime Enhancements
- 3.1 Lambda expression
- Basics
- Generics
- 3.2 Function object wrapper
- std::function
- std::bind/std::placeholder
- 3.3 rvalue reference
- lvalue, rvalue, prvalue, xvalue
- rvalue reference and lvalue reference
- Move semantics
- Perfect forwarding
- 3.1 Lambda expression
Part II — The Standard Library
Batteries included: containers, smart pointers, regular expressions, concurrency, and the filesystem.
- Chapter 04: Containers
- 4.1 Linear containers
std::arraystd::forward_list
- 4.2 Unordered containers
std::unordered_setstd::unordered_map
- 4.3 Tuples
std::tuple- basic operation
- runtime indexing
std::variant - merge and iteration
- 4.1 Linear containers
- Chapter 05: Smart Pointers and Memory Management
- 5.1 RAII and reference counting
- 5.2
std::shared_ptr - 5.3
std::unique_ptr - 5.4
std::weak_ptr
- Chapter 06: Regular Expression
- 6.1 Introduction
- Ordinary characters
- Special characters
- Quantifiers
- 6.2
std::regexand its relatedstd::regexstd::regex_matchstd::match_results
- 6.1 Introduction
- Chapter 07: Parallelism and Concurrency
- 7.1 Basic of Parallelism
- 7.2 Mutex and Critical Section
- 7.3 Futures
- 7.4 Condition Variable
- 7.5 Atomic Operation and Memory Model
- Atomic Operation
- Consistency Model
- Memory Orders
- Chapter 08: File System
- 8.1 Documents and links
- 8.2
std::filesystem
- Chapter 09: Minor Features
- 9.1 New Types
long long int
- 9.2
noexceptand Its Operations - 9.3 Literal
- Raw String Literal
- Custom String Literal
- 9.4 Memory Alignment
- 9.1 New Types
Part III — By Standard Version
A tour of what each recent standard adds: C++20, C++23, and the forthcoming C++26.
- Chapter 10: C++20
- 10.1 Concept
- 10.2 Module
- 10.3 Range
- 10.4 Coroutine
- Chapter 11: C++23
- 11.1 Language features
- Deducing this (explicit object parameter)
- if consteval
- Multidimensional subscript operator
- auto(x) and static operator()
- [[assume]]
- 11.2 The standard library
- std::expected
- std::print and std::println
- std::mdspan
- std::flat_map and std::flat_set
- Ranges additions
- 11.1 Language features
- Chapter 12: C++26 (Outlook)
- 12.1 Language features
- Static reflection
- Contracts
- Pack indexing
- = delete with a reason
- The placeholder _
- 12.2 The standard library
- std::execution
- Saturation arithmetic
- Other library facilities
- 12.1 Language features
Appendices
- Appendix 1: Further Study Materials
- Appendix 2: Modern C++ Best Practices
- Appendix 3: Modern C++ Feature Index
Table of Content | Last Chapter | Next Chapter: Preface
Licenses

This work was written by Ou Changkun and licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. The code of this repository is open sourced under the MIT license.