例子:比较两个值的函数模板

template <typename T>
int compare(const T &t1, const T &t2)
{
if (t2 < t1) return 1;
if (t1 < t2) return -1;
return 0;
}

编写泛型代码的两个重要原则:
1 模板中函数参数是const的引用
2 函数体中条件判断仅适用<比较运算符

模板参数列表中 typename 和 class 没有什么不同。typename更为直观。