What you'll learn

  • Understand & implement the new C++20 features

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

  • Migrate existing C++ codebase to C++20

  • Use the new Python-style formatting library to format strings

  • 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

  • Use coroutines to write concurrent code

  • 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/2022, gcc 11)

Course Description

This course only focuses on the new C++20 standard features without going into the basics or details of previous standards of C++ or basics of object-oriented programming.  You must've some basic understanding of C++11 in order to follow through in this course. In case, you're not familiar with modern C++ features, check out my other course called Complete Modern C++.

This course will aim to explain the new core language & the library features. You'll learn to use designated initializers, consteval, consinit, unevaluated constext usage of lambda expressions, enum usage, etc. You'll also get to know about the new way through which C++ code is reused without using header files. This is possible through modules, which is a faster and easier way to reuse existing functions or classes.

If you implement classes for use with containers, then you'll have to provide implementation of many comparison operators which becomes tedious and error-prone. C++20 provides a new operator called the three-way comparison operator (space-ship operator) that simplifies implementation of comparison operators. Additionally, it now becomes easier to use algorithms with containers through ranges. No need to use begin() & end() functions to operate on the container.

Concepts is a new way of applying constraints on template arguments. It is much simpler to use as compared to SFINAE (enable_if).  Learn & implement concepts to ensure your functions accept the right kind of arguments and avoid runtime errors.

Finally, you'll learn about resumable functions, called coroutines. Using coroutines, you can write concurrent code without the need for synchronization or multiple threads. This enables you to write high performance code without the overhead of creating & destroying threads.

If you're ready, then let's get started right away.

Course curriculum

    1. Course Introduction

      FREE PREVIEW
    2. C++20 Topics Overview

    3. Compiler Support for C++20

    4. A word on source code

    5. Slide Deck

    1. Source Code

    2. Designated Initialization - Aggregate Types

    3. Designated Initialization - Examples

    4. Designated Initialization - More Examples

    5. Init- Statement in Range-Based For Loop - I

    6. Init- Statement in Range-Based For Loop - II

    7. char8_t & std:u8string - I

    8. char8_t & std:u8string - II

    9. Structured Bindings Changes

    10. constexpr Changes

    11. Immediate Functions - conseval

    12. Compile-time Initialization - constinit

    13. Conditionally Explicit Constructor - I

    14. Conditionally Explicit Constructor - II

    15. Conditionally Explicit Constructor - III

    16. Non-Type Template Parameteres

    17. Course Review

    1. Source Code

    2. Lambda Expressions - Implicit this Capture

    3. Lambda Expressions - Template Parameters - I

    4. Lambda Expressions - Template Parameters - II

    5. Lambda Expressions - Unevaluated Context

    1. Source Code

    2. [nodiscard] Attribute

    3. New C++20 Attributes

    4. using enum Declaration

    1. Source Code

    2. Stream Formatting - I

    3. Stream Formatting - II

    4. C++20 Formatting Library

    5. Basic Usage

    6. println Helper Implementation

    7. Format Specification - Type

    8. Format Specification - Fill, Alignment & Width

    9. Format Specification - Number Formatting

    1. Source Code

    2. Motivation

    3. Basics

    4. Examples

    5. requires Usage

    6. Abbreviated Templates

    7. Requirement Types - I

    8. Requirement Types - II

    9. Custom Concepts

    10. Standard Library Concepts

About this course

  • $24.99
  • 133 lessons
  • 11 hours of video content

Instructor(s)

Owner at Poash Technologies & Poash Learning 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 35,000 software professionals in a teaching career spanning more than 2 decades. 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++.