Table of Contents Author Guidelines Submit a Manuscript
Scientific Programming
Volume 11 (2003), Issue 4, Pages 321-327
http://dx.doi.org/10.1155/2003/306458

Dynamic Compilation of C++ Template Code

Martin J. Cole and Steven G. Parker

Scientific Computing and Imaging Institute, School of Computing, University of Utah, Salt Lake City, UT 84112, USA

Received 2 December 2003; Accepted 2 December 2003

Copyright © 2003 Hindawi Publishing Corporation. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract

Generic programming using the C++ template facility has been a successful method for creating high-performance, yet general algorithms for scientific computing and visualization. However, adding template code tends to require more template code in surrounding structures and algorithms to maintain generality. Compiling all possible expansions of these templates can lead to massive template bloat. Furthermore, compile-time binding of templates requires that all possible permutations be known at compile time, limiting the runtime extensibility of the generic code. We present a method for deferring the compilation of these templates until an exact type is needed. This dynamic compilation mechanism will produce the minimum amount of compiled code needed for a particular application, while maintaining the generality and performance that templates innately provide. Through a small amount of supporting code within each templated class, the proper templated code can be generated at runtime without modifying the compiler. We describe the implementation of this goal within the SCIRun dataflow system. SCIRun is freely available online for research purposes.