Back To Schedule

C++ Concepts

Constraining C++ Templates in C++20 and Before

09:00 - 17:00 Wednesday 28th February 2024 UTC

C++ Concepts is one of the most significant and long-awaited features of C++20. They improve template interfaces by explicitly stating the compile-time contract between the user and the architect of the code, which limits the number of compilation errors and makes them much more user-friendly when they occur. The workshop will describe this C++20 feature, its similarities, and differences to Concepts TS (provided with gcc-7), and will present ways to benefit from a significant part of the functionality in current production C++ projects that can use only "legacy" C++11 features.

Preconditions to take part in the workshop:

  1. Recent working experience with C++ templates.
  2. A laptop with a web browser and access to the Internet.


  1. C++ Templates in a Nutshell
  2. C++ template definition
  3. Template parameters
  4. Template specialization
  5. Introduction to C++20 Concepts
  6. Motivation
  7. Concept Definition
  8. Constraining Types with Concepts
  9. requires Clause
  10. requires Expression
  11. Concept Categories
  12. C++ Standard Library Concepts
  13. Constraint Normalization
  14. Concepts TS
  15. Major Differences from C++20 Concepts
  16. Concepts Emulation in C++17
  17. SFINAE
  18. std::enable_if
  19. std::void_t
  20. Type Traits
  21. Constraining Class Template Parameters

Register Now

Mateusz Pusz

Mateusz is a software architect, principal engineer, and security champion with many years of experience in designing, writing and maintaining C++ code for fun and living.

He worked on many different projects both in large corporations and small Open Source groups. His main areas of interest and expertise are code performance, low latency, stability, and security.

Through all those years he became an expert in many different domains. IP networking, UMTS, WiMax, graphics (OpenGL and DirectX), media, OpenCL, storage devices, finance, GPS navigation are only a few of subjects he worked on up to now. His experience is ranging from creating user applications down to kernel mode drivers.

Mateusz is an active voting member of the ISO C++ Committee (WG21) where, together with the best C++ experts in the world, he shapes the next official version of the C++ language. He is also a member of WG21 Study Group 14 (SG14) responsible for driving performance and low latency subjects in the Committee. In 2013 Mateusz won “Bench Games 2013” – worldwide competition in the C++ language knowledge.