Introduction
How to combine elements from two or more classes when they are not permitted to make changes to the original class.
Solving this problem is an excellent illustration of the different uses of inheritance, templates, overloaded functions, and the interactions among these mechanisms.