Part 3: Applied Templates
In this part, you will put to practice the knowledge of templates you have accumulated so far. You will learn about static polymorphism and patterns such as the Curiously Recuring Template Pattern and mixins, as well as type erasure, tag dispatching, expression templates, and typelists. You will also learn about the design of standard containers, iterators, and algorithms and you will learn to implement your own. We will explore the C++20 Ranges library with its ranges and constrained algorithms and you will learn how to write your own range adaptor.
This section comprises the following chapters: