3. Using the C++ Compiler Options
6.1.1 Function Template Declaration
6.1.2 Function Template Definition
6.2.1 Class Template Declaration
6.2.2 Class Template Definition
6.2.3 Class Template Member Definitions
6.2.3.1 Function Member Definitions
6.2.3.2 Static Data Member Definitions
6.3.1 Implicit Template Instantiation
6.3.2 Explicit Template Instantiation
6.3.2.1 Explicit Instantiation of Template Functions
6.3.2.2 Explicit Instantiation of Template Classes
6.3.2.3 Explicit Instantiation of Template Class Function Members
6.3.2.4 Explicit Instantiation of Template Class Static Data Members
6.5 Default Template Parameters
6.6.1 Template Specialization Declaration
6.6.2 Template Specialization Definition
6.6.3 Template Specialization Use and Instantiation
6.7.1 Nonlocal Name Resolution and Instantiation
6.7.2 Local Types as Template Arguments
6.7.3 Friend Declarations of Template Functions
6.7.4 Using Qualified Names Within Template Definitions
6.7.6 Referencing Static Variables and Static Functions
6.7.7 Building Multiple Programs Using Templates in the Same Directory
9. Improving Program Performance
10. Building Multithreaded Programs
12. Using The C++ Standard Library
13. Using the Classic iostream Library
Templates make it possible for you to write a single body of code that applies to a wide range of types in a type-safe manner. This chapter introduces template concepts and terminology in the context of function templates, discusses the more complicated (and more powerful) class templates, and describes the composition of templates. Also discussed are template instantiation, default template parameters, and template specialization. The chapter concludes with a discussion of potential problem areas for templates.