Summary
Templates provide two services. The first is
code reuse, but in a different way than inheritance. Inheritance
requires a certain type relationship. Templates require only that
the compiler be capable of finding the functionality required of
the specified type. Inheritance makes type requirements, whereas
templates take what types we give them.
The other service that templates provide is
efficiency. By mixing in types at compile time, we can use static
binding to make decisions at runtime instead of at compile time.
This is the key to the promise of smaller, faster code that
templates make.
|