Issue No. 04 - July/August (1999 vol. 1)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/5992.774843
The C++ programming language has a powerful template facility that enables the development of flexible software without incurring a large abstraction penalty. Templates let programmers tell the compiler how to create classes and functions parametrized in terms of other types and constants. Programmers often use templates to implement type-safe generic containers that hold elements of a particular type, or generic functions that can, for example, sort the elements in an arbitrary generic container. Templates are one of the most complex C++ language features. For this reason, they were deliberately left out of the Java programming language. Nevertheless, templates are the fundamental enabling technology that supports construction of maintainable, highly abstract, high-performance scientific codes in C++.
James Crotinger, Scott Haney, "How Templates Enable High-Performance Scientific Computing in C++", Computing in Science & Engineering, vol. 1, no. , pp. 66-72, July/August 1999, doi:10.1109/5992.774843