1.Function Template可以针对不同的Template arguments完成一个系列的函数
例如
template<typename T>
inline T const & max(T const &a,T const &b)
{
return a>b?a:b;
}
2.Function template可以从传递过来的arguments的类型来具体化
int a = ::max(10,20);
那么Function template 就具体化为
inline int const& max(int const &a,int const & b)
3.你可以具体指出它的参数类型
int a = ::max<int>(10,20);
4.Function template可以被重载overloaded
inline T const& max(T const &a,T const &b,T const &c)
{
return ::max(::max(a,b),c);
}
当然记住一点,重载的相似点越小越好