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++.
J. Crotinger and S. Haney, "How Templates Enable High-Performance Scientific Computing in C++," in Computing in Science & Engineering, vol. 1, no. , pp. 66-72, 1999.