Introduction
A template allows a class or function to be parameterized by a type.
The template mechanism is performed at compile time, permits extensive type checking statically, and eliminates many of the run-time casts that typically populate Java programs.
Use of template: a major tool to develop a rich set of data structure, container, or abstractions.