Function Templates¶
Origin: Duplicated Code¶
Overloading: function max
with different implementations …
int max(int a, int b)
{
return (a<b)?b:a;
}
float max(float a, float b)
{
return (a<b)?b:a;
}
Problem: duplicated code
A simple Function-Template¶
Solution: “code generator” ⟶ Templates
template <typename T> T max(T a, T b)
{
return (a<b)?b:a;
}
Generation recipe
T
… Template parameterRequirement:
operator<()
must be valid
More Templates from the STL¶
Better: look into the STL. For example …
#include <algorithm>
float f = std::max(1.2, 1.3);
int i = std::max(1, 2);
std::string s = std::max("abc", "abd");