developers, architects
2 days

C++20 is not just yet another incremental update but a profound change to the C++ language and its standard library. With many essential features added this C++ version may impact us even more than C++11 did nearly 10 years ago.

C++20 is already ratified by the ISO C++ Committee and should be published as the official ISO document soon. The C++ compiler developers are working hard to make their product conforming to the new specification and lots of features are already available to play with. During the training, a particular emphasis will be put on learning and practicing the most prominent C++20 features like Concepts, Ranges, and Coroutines, but also we will try many other smaller features of the new language.

Two days are not enough to cover everything of this massive release. We will do our best to cover as much as possible but probably we will scope mainly on the new language features and will cover only the most essential library facilities.

Most probably during the workshop we will work with the latest version of the compiler thanks to the Compiler Explorer, so no special environment preparation is needed.


  • Introduction of the most important features and changes of the C++20 language
  • Particular focus on describing the reason and benefit of adding each change
  • Hands-on workshops to master usage of the most important new tools


The following plan is an initial proposal for the training material. The final agenda is always created based on the individual pre-training analysis of the client's requirements and constraints.

  1. Various usability extensions
    1. Spaceship operator
    2. Lambdas on steroids
    3. Designated initializers
    4. Fixing aggregates
    5. explicit(bool)
    6. char8_t
    7. Improving structured bindings
    8. nested inline namespaces
    9. Initializer for range-based for
    10. Even more attributes
  2. Compile-time evaluation enhancements
    1. Expanded constexpr
    2. constexpr algorithms
    3. constexpr containers
    4. Immediate functions
    5. constinit
    6. is_constant_evaluated
  3. Templates on steroids
    1. CTAD for aggregates and aliases
    2. Class NTTPs
    3. Down with typename!
    4. Concepts
  4. Major C++ Library additions
    1. Ranges
    2. Even better chrono
    3. Text formatting
    4. Improving smart pointers
    5. span
  5. Coroutines
  6. Modules
developers, architects
2 days


Mateusz Pusz