C++
developers, architects
1-2 days
lecture
workshop

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. Concepts limit the number of compilation errors and make 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.

The training targets C++ developers and code architects that want to improve their skills in implementing general-purpose tools.

TRAINING HIGHLIGHTS

  • Learning of C++ Constraints and Concepts
  • Learning of C++20 Concepts alternatives in legacy code bases
  • Particular focus on the usage of "C++ templates" in practical tasks

TRAINING AGENDA

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. C++ Templates in a Nutshell
    1. C++ template definition
    2. Template parameters
    3. Template specialization
  2. Introduction to C++20 Concepts
    1. Motivation
    2. Concept Definition
    3. Constraining Types with Concepts
    4. requires Clause
    5. requires Expression
    6. Concept Categories
    7. C++ Standard Library Concepts
    8. Constraint Normalization
  3. Concepts TS
    1. Major Differences from C++20 Concepts
  4. Concepts Emulation in C++17
    1. SFINAE
    2. std::enable_if
    3. std::void_t
    4. Type Traits
    5. Constraining Class Template Parameters
C++
developers, architects
1-2 days
lecture
workshop

Trainer

Mateusz Pusz
FOUNDER / C++ TRAINER