Static Data Structures

C++ is decidedly asymmetric in its approach to the static and dynamic aspects of the language. As a consequence, techniques that we develop using one aspect (e.g., for loops with STL iterators) will not work with the other (Template Metaprogramming for the static side of C++) due to syntax differences in the way each is defined and used [11]. These incompatibilities complicate switching between dynamic and static implementations of a behavior. Thus, for example, it is difficult to optimize a bottleneck by making a straightforward dynamic implementation static.