The ability to write a template and then use that template multiple times, with different template arguments each time, is one of the great features of C++. Even better is the ability to carve out exceptions to the rule. That is, you can tell the compiler to use a template for most template arguments, except that for certain argument types, it should use a different template definition. This Exploration introduces this feature.
Instantiation and Specialization
Template terminology is tricky. When you use a template, it is known as instantiating the template. A template instanceis a concrete function or class ...