Chapter 1: An Introduction to Templates
As a C++ developer, you should be at least familiar if not well versed in template metaprogramming, in general, referred to in short as templates. Template metaprogramming is a programming technique that uses templates as blueprints for the compiler to generate code and help developers avoid writing repetitive code. Although general-purpose libraries use templates heavily, the syntax and the inner workings of templates in the C++ language can be discouraging. Even C++ Core Guidelines, which is a collection of dos and don'ts edited by Bjarne Stroustrup, the creator of the C++ language, and Herb Sutter, the chair of the C++ standardization committee, calls templates pretty horrendous.
This book is intended to shed light on this area of the C++ language and help you become prolific in template metaprogramming.
In this chapter, we will go through the following topics:
- Understanding the need for templates
- Writing your first templates
- Understanding template terminology
- A brief history of templates
- The pros and cons of templates
The first step in learning how to use templates is to understand what problem they actually solve. Let's start with that.