Templates can be used to develop elaborate libraries of elements that connect in seamless ways. Nontemplate libraries can often do such things too. However, when it comes to small, fairly simple utilities that make everyday programming easier, traditional procedural or object-oriented libraries are not always viable because the overhead needed to invoke the simple functionality is disproportionate to the facility offered . The C preprocessor allows some of these "simple needs" to be addressed, but often it is not quite adequate for the tasks at hand.
In this part we explore some small stand-alone utilities for which templates are an ideal means of implementation:
A framework for type classification
Smart Pointers
Tuples
Functors
Our goal is to demonstrate the techniques discussed earlier. We combine them and modify them to create genuinely useful software components . However, our main topic is still C++ Templates and not (for example) the development of a complete C++ library. We hope the code we present is a useful tutorial and source of inspiration for C++ library writers, but we don't claim that it is the best choice for off-the-shelf components.