C++20 in Practice: A Complete Introduction

Nicolai M. Josuttis

⏱ 2-day-workshop
intermediate
advanced
09:00-18:00, Monday, 15th - Tuesday, 16th April 2024
C++20, a major release of C++ with several new features, is now becoming mainstream. This two-day workshop gets you ready to use it. It teaches all significant new features in a way that you understand their power and can start to use them in practice.

C++20 is huge. It will change the way we program more dramatically than C++11 did. As usual, not everything is self-explanatory, combining new features gives even more power, and there are hidden pitfalls. Therefore, it is key to really understand design and conceptional details of the new features of C++20 to use them right.

This two-day workshop will go through all major and important minor features of C++20 (covering both language and library), motivating them, providing compelling examples, and giving key insights and hints about how to use them in practice. Important C++23 extensions and modifications for these features are also covered.

As a member of the C++ standards committee, Nicolai will also give useful background information about purpose and design decisions.

As a result, you will understand the power of the programming paradigm C++20 intoduces to use them appropriately without too much frustration, because things do not work as self-explanatory as they look at first.

Outline

This two-day workshop will cover all new language features of C++20 (plus significant supplementations of C++23) with real examples that work and provide insights about the power of these features, but reveal also their flaws and traps.

Topics include:

  • The spaceship operator <=> (including code broken)
  • Generic functions with auto
  • Concepts, constraints, and requirements in detail
  • Ranges and views in detail (including all the pitfalls of the design of views)
  • Spans
  • Coroutines
  • jthread and stop tokens
  • Barriers, latches, and semaphores, extensions for atomics, output sync streams
  • Chrono extensions (calendar and time zone support)
  • Formatted output (standard and user-defined formatting)
  • Modules
  • Extensions to compile-time computing (consteval, constinit, etc.)
  • Template extensions (such new NTTP types)
  • Several small new language and library features
🏷 C++20
🏷 concepts
🏷 ranges
🏷 views
🏷 constraints
🏷 requirements
🏷 span
🏷 coroutines
🏷 modules
🏷 operator <=>

Nicolai M. Josuttis

Nicolai Josuttis (www.josuttis.com) is well-known in the community for his authoritative books and talks. For more than 20 years he has been a member of the C++ Standard Committee. He is the author of several worldwide best-sellers, including: - C++20: The Complete Guide - C++17: The Complete Guide - C++ Move Semantics: The Complete Guide - The C++ Standard Library: A Tutorial and Reference - C++ Templates: The Complete Guide (w/ David Vandevoorde & Doug Gregor)