Master The C++20 Standard

Master the full spectrum of C++20 standard, core language updates, transformative features like Modules, Concepts, Coroutines, and Ranges, and essential new library components.

Course Description

This course offers a comprehensive exploration of C++20, designed to help developers master its full spectrum of enhancements. It covers extensive core language improvements—including updates to lambdas, constexpr capabilities, and attributes—alongside transformative pillar features such as Modules for better organization, Concepts for robust template metaprogramming, Coroutines for simplified asynchronous code, and Ranges for expressive data manipulation. Furthermore, the course ensures proficiency with essential new library components like std::format, std::span, and jthread, equipping developers to write truly modern, efficient, and powerful C++ applications.

Features

13-hrs On Demand Video

Exclusive 1-on-1 With Instructor

Course Completion Certificate

Priority Q/A

Full Lifetime Access

Community Access

Curriculum

Understand in detail on what is planned under each module

Course Introduction

C++20 Topics Overview

Compiler Support for C++20

A word on source code

Slide Deck

Source Code

Designated Initialization - Aggregate Types

Designated Initialization - Examples

Designated Initialization - More Examples

Init- Statement in Range-Based For Loop - I

Init- Statement in Range-Based For Loop - II

char8_t & std:u8string - I

char8_t & std:u8string - II

Structured Bindings Changes

constexpr Changes

Immediate Functions - conseval

Compile-time Initialization - constinit

Conditionally Explicit Constructor - I

Conditionally Explicit Constructor - II

Conditionally Explicit Constructor - III

Non-Type Template Parameteres

Course Review

Source Code

Lambda Expressions - Implicit this Capture

Lambda Expressions - Template Parameters - I

Lambda Expressions - Template Parameters - II

Lambda Expressions - Unevaluated Context

Source Code

[nodiscard] Attribute

New C++20 Attributes

using enum Declaration

Source Code

Stream Formatting - I

Stream Formatting - II

C++20 Formatting Library

Basic Usage

println Helper Implementation

Format Specification - Type

Format Specification - Fill, Alignment & Width

Format Specification - Number Formatting

Source Code

Motivation

Basics

Examples

requires Usage

Abbreviated Templates

Requirement Types - I

Requirement Types - II

Custom Concepts

Standard Library Concepts

Source Code

Build Process Overview

Module Basics

Naming Modules

Module Compilation

Declaration & Definition Separation

Submodules

Partition Modules

Header Units

Module Private Marker

Course Review

Source Code

Comparison Operators - I

Comparison Operators - II

Three-way Comparison Operator - I

Three-way Comparison Operator - II

Three-way Comparison Operator - III

Three-way Comparison Operator - IV

Synthesized Expressions - I

Synthesized Expressions - II

Comparisons

Equality Operator - I

Equality Operator - II

Equality Operator - III

Ordering Categories

Strong Ordering

Weak Ordering - I

Weak Ordering - II

Partial Ordering - I

Partial Ordering - II

Ordering Summary

Backward Compatibility

Utilities - I

Utilities - II

Utilities - III

Utilities - IV

Summary

Source Code

Algorithms & Iterators

Ranges Introduction

Ranges Example

Range Concepts - I

Range Concepts - II

Range Concepts - III

Projections - I

Projections - II

Projections - III

Algorithm Return Types - I

Algorithm Return Types - II

Algorithm Return Types - III

Views - I

Views - II

Views - III

More Views

View Composition

Pipelines

Range Factories

Course Review

Source Code

Subroutines

Coroutines Introduction

Coroutine Example

Coroutine Anatomy

Coroutine Implementation

Coroutine Workflow - I

Coroutine Workflow - II

Coroutine Workflow - III

Return Values (co_return)

Generators (co_yield)

Awaitable

Awaitable Implementation

Awaiter

Awaiter Implementation - I

Awaiter Implementation - II

Awaiter Methods

Coroutine Concurrency - I

Coroutine Concurrency - II

Coroutine Concurrency - III

Exceptions in Coroutines

Initialization Stage Exceptions

Execution Stage Exceptions - I

Execution Stage Exceptions - II

Conclusion

Source code

std::jthread

Thread Stop

Latch

Barrier

Semaphores

Source code

std::osyncstream

std::source_location

std:span

Span Fixed Extent

Span Dynamic Extent

Spans As Function Parameters

Subspans

std::is_constant_evaluated

std::bind_front

Container Helper Functions

std::erase()/std::erase_if()

std::ssize

std::contains

Why Do This Course

Gain comprehensive mastery of all key C++20 language and library features.

Use modules instead of headers to modularize software

Write highly readable and composable data processing pipelines using the Ranges library

Master the ability to write clearer template interfaces and constraints using Concepts

Simplify complex asynchronous operations and I/O-bound tasks with C++20 Coroutines

Effectively utilize powerful new library additions like std::format, std::span, and jthread.

Requirements

  • Basic knowledge of C++11/14/17
  • Modern C++ compiler (Visual Studio 2022, gcc 13, clang 17)

Related Products

Additional products that may be relevant to your interests

Image23

Instructor


- Hello! I'm Umar Lone

I've educated and mentored students and professionals globally, leveraging over 20 years of experience in C++, Object-Oriented Programming, Design Patterns, and related technologies. My professional background includes significant contributions to C++, Java, and C# projects with esteemed companies, alongside providing specialized project consultation & mentoring.


My current focus is on delivering comprehensive video courses that distill this extensive knowledge. I specialize in transforming intricate concepts into clear, practical, and actionable insights, supported by real-world examples. This approach is designed to equip you with the necessary clarity and confidence for sustained growth and impactful contributions within your projects and career trajectory.


Begin your learning journey with me now and unlock the advanced understanding and practical expertise essential for making a significant impact in your field.


Keep in touch

Subscribe for announcements, new courses & discount coupons

Yes please, save my details so you can send me educational content that is relevant and helpful.