Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Front Page / Sequences

Sequences

Compile-time sequences of types are one of the basic concepts of C++ template metaprogramming. Differences in types of objects being manipulated is the most common point of variability of similar, but not identical designs, and these are a direct target for metaprogramming. Templates were originally designed to address this exact problem. However, without predefined mechanisms for representing and manipulating sequences of types as opposed to standalone template parameters, high-level template metaprogramming is severely limited in its capabitilies.

The MPL recognizes the importance of type sequences as a fundamental building block of many higher-level metaprogramming designs by providing us with a conceptual framework for formal reasoning and understanding of sequence properties, guarantees and characteristics, as well as a first-class implementation of that framework — a wealth of tools for concise, convenient, conceptually precise and efficient sequence manipulation.