Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Pure C++20 Mastery: Concepts, Ranges, Coroutines & Modules
Rating: 4.7 out of 5(48 ratings)
456 students

Pure C++20 Mastery: Concepts, Ranges, Coroutines & Modules

A focused deep dive into C++20 language and library features for modern C++ developers
Created byUmar Lone
Last updated 4/2026
English

What you'll learn

  • Learn about the new C++20 language standard features
  • Migrate existing C++ codebase to C++20
  • Use coroutines to write concurrent code
  • Use modules instead of headers to modularize software
  • Use ranges library to simplify working with containers & algorithms
  • Use concepts to apply constraints on algorithms & classes

Course content

13 sections153 lectures12h 37m total length
  • Introduction4:21

    Course introduction

  • Compiler support0:12
  • A word on source code0:06
  • Slide deck0:04

    Course slides

Requirements

  • Basic understanding of C++11

Description

Pure C++20 Mastery is a comprehensive, standards-focused deep dive into the C++20 language and standard library.

Unlike most courses that combine older C++ standards with a brief C++20 overview, this course is entirely dedicated to C++20 — covering core language features, new library utilities, concurrency primitives, and the programming models introduced in this standard.

This course assumes some familiarity with modern C++ (C++11/14/17).
It does not repeat language fundamentals, object-oriented basics, or pre-C++20 material.


Core C++20 language features

You will learn all major C++20 language additions, including:

  • consteval and constinit

  • Designated initializers

  • Lambda improvements, including usage in unevaluated contexts

  • Modern enum enhancements

  • The three-way comparison operator (<=>) and defaulted comparisons

These features are explained in terms of design intent, correct usage, and real-world implications.


Modules — a new compilation and reuse model

C++20 introduces modules, fundamentally changing how C++ code is structured and reused.

This course covers:

  • Why modules were introduced

  • How they differ from header-based designs

  • How to define, export, and import modules

  • Build-time, dependency, and architectural implications

  • Practical limitations and current tooling realities


Ranges — algorithms redesigned

C++20 ranges are not just syntactic sugar.

You’ll gain a deep understanding of the ranges model, including:

  • Views and lazy evaluation

  • Range adaptors and composition

  • Eliminating iterator boilerplate (begin() / end())

  • Writing safer, more expressive algorithm pipelines

  • Performance and correctness considerations


Concepts — constraints done right

Concepts introduce a clean, expressive way to constrain templates.

You’ll learn:

  • Why concepts replace many SFINAE patterns

  • Concepts vs enable_if

  • Writing meaningful constraints

  • Improving compile-time diagnostics

  • Designing robust generic interfaces


Coroutines — resumable functions and cooperative concurrency

C++20 coroutines introduce a new execution model based on suspendable and resumable functions.

This course explains:

  • Coroutine mechanics and execution flow

  • Promise types, awaitables, and suspension points

  • How coroutines enable asynchronous and cooperative concurrency

  • How coroutines relate to threads and executors

  • When coroutines are appropriate — and when they are not


C++20 concurrency & synchronization utilities

In addition to language features, this course provides in-depth coverage of new C++20 concurrency facilities, including:

  • std::jthread and cooperative cancellation

  • Stop tokens and structured thread lifetime management

  • Modern synchronization primitives introduced or enhanced in C++20 such as latch, barrier & semaphore.

  • Safer, more expressive concurrency patterns enabled by the new library design

This section focuses on why these utilities were added, how they improve correctness, and how they change modern C++ concurrency design.


New and updated C++20 library utilities

You will also explore important C++20 standard library additions, such as:

  • Formatting facilities (std::format)

  • New utility types and helper classes such as std::osyncstream, std::source_location, std::span, etc.

  • Library changes that complement ranges, concepts, and coroutines

  • Practical usage patterns and limitations

These topics are often skipped or briefly mentioned in other courses — here they are treated as first-class C++20 features.


  • Update [12-Dec-2024] Added content on new C++20 library features & classes

  • Update [07-Dec-2024] Added concurrency support videos

  • Update [26-Nov-2024] Added quiz for all sections

  • Update [09-Nov-2024] Added more videos with examples of views in Ranges section

Who this course is for:

  • C++ developers who want to learn C++20
  • C++ developers who want to migrate their code to C++20