Udemy

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

Enroll Now
  • 431 Students
  • Updated 2/2026
4.7
(45 Ratings)
CTgoodjobs selects quality courses to enhance professionals' competitiveness. By purchasing courses through links on our site, we may receive an affiliate commission.

Course Information

Registration period
Year-round Recruitment
Course Level
Study Mode
Duration
12 Hour(s) 37 Minute(s)
Language
English
Taught by
Umar Lone
Rating
4.7
(45 Ratings)

Course Overview

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

A focused deep dive into C++20 language and library features for modern C++ developers

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

Course Content

  • 13 section(s)
  • 153 lecture(s)
  • Section 1 Introduction to C++20
  • Section 2 Core Language Changes
  • Section 3 Lambda Expressions & Templates
  • Section 4 More Core Language Changes
  • Section 5 Quiz
  • Section 6 Text Formatting Library
  • Section 7 Concepts
  • Section 8 Modules
  • Section 9 Three-way Comparison
  • Section 10 Ranges
  • Section 11 Coroutines
  • Section 12 Concurrency
  • Section 13 More Additions to Standard Library

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


Reviews

  • S
    Sergio Ruiz
    4.0

    yes

  • H
    Henry Lee
    5.0

    Excellent, clear explanation.

  • A
    Arjun bajpai
    5.0

    The course is to the point and explanation is very crisp!

  • J
    Julian Nicholls
    4.0

    I am enjoying the content, which is accurate and well explained. Some of the code is not quite right (at least on my Mac clang compiler). An example of that is std::strong_ordering has no default constructor, making the code presented in that lecture uncompilable.

Start FollowingSee all

We use cookies to enhance your experience on our website. Please read and confirm your agreement to our Privacy Policy and Terms and Conditions before continue to browse our website.

Read and Agreed