What you'll learn

  • Understand & implement the new C++20 features

  • Learn about the changes & updates to existing C++ features

  • Full lifetime access
  • Access on mobile
  • Certificate of Completion

    Course Prerequisites

    • Basic knowledge of C++11/14/17 features
    • Any modern C++ compiler with C++20 support (Visual Studio 2019, gcc 11)

Course Description

Note: This course is still in draft mode and is 50% complete. 

C++20 is said to be the next revolutionary standard after C++11. It has improved existing features, such as lambda expressions, templates, enums, etc, and has added a host of new features.

The most important new features are the big four - concepts, coroutines, modules & ranges. Concepts is a new way to apply constraints to your template arguments. Coroutines help us write functions that can be interrupted & resumed, all without additional threads.

Modules are a new way to modularize a C++ application. No more messy header files. You can expose or hide your code in modules with full control.

Ranges is another important feature added in C++20. It allows you to work with containers and algorithms easily without having to deal directly with iterators.

Learn about all these features in this course and more.

Course curriculum

  • 1

    Fundamental Features

    • Welcome

    • 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

    • Lambda Expressions - Implicit this Capture

    • Lambda Expressions - Template Parameters - I

    • Lambda Expressions - Template Parameters - II

    • Lambda Expressions - Unevaluated Context

    • [nodiscard] Attribute

    • New C++20 Attributes

    • using enum Declaration

  • 2


    • Motivation

    • Basics

    • Examples

    • requires Usage

    • Abbreviated Templates

    • Requirement Types - I

    • Requirement Types - II

    • Custom Concepts

    • Standard Library Concepts

  • 3

    New Chapter

    • Build Process Overview

    • Module Basics

    • Naming Modules

    • Module Compilation

    • Declaration & Definition Separation

    • Submodules

    • Partition Modules

    • Header Units

    • Module Private Marker


Owner at Poash Technologies

Umar Lone

Civil engineer who found his calling in software development. Never worked as a Civil engineer, jumped at the first chance and started teaching C++, Visual C++ & COM 18 years ago. Currently, trains software professionals in various IT companies in India in different technologies, such as C++, Advanced C++, STL, Design Patterns, Android, Unity, Linux, etc. Very passionate about teaching and has trained more than 25,000 software professionals in a teaching career spanning more than 18 years. An avid gamer, currently trying his hand with game development in Unity & Unreal. Has a few Android applications to his credit, including one on Design Patterns. Only thing he likes more than C++ is Modern C++.