Would I write a function or class that takes ints, and another just like it except it takes strings, and another just like it except it takes Ubergeeks? That doesn’t sound lazy! This chapter enables us to write it once, using templates.
Function templates
Recall this function for swapping
ints, from Chapter
8:
void swap (int& arg1, int& arg2)
{
int temp = arg2; arg2 = arg1; arg1 = temp;
}
That’s fine for
int, but what if I want
doubles?
strings? Heffalumps? I don’t want to write new versions for every type I encounter! Here’s the fix.
template <typename T>
void swap (T& arg1, T& arg2)
{
T temp = arg2; ...