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
  • 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

Part II — The Standard Library

Batteries included: containers, smart pointers, regular expressions, concurrency, and the filesystem.

  • Chapter 04: Containers
    • 4.1 Linear containers
      • std::array
      • std::forward_list
    • 4.2 Unordered containers
      • std::unordered_set
      • std::unordered_map
    • 4.3 Tuples std::tuple
      • basic operation
      • runtime indexing std::variant
      • merge and iteration
  • 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::regex and its related
      • std::regex
      • std::regex_match
      • std::match_results
  • 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 noexcept and Its Operations
    • 9.3 Literal
      • Raw String Literal
      • Custom String Literal
    • 9.4 Memory Alignment

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
  • 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

Appendices

Table of Content | Last Chapter | Next Chapter: Preface

Licenses

Creative Commons License
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.