tempalte<typename T> const T& min(const T& a,const T& b)
{return (a<b)? a:b;}
int z=min<int>(i,j);
函数模板的类型推断
tempalte<typename T,typename U> const T& min(const T& a,const U& b)
{return (a<b)? a:b;}
int z=min<int.double>(i,j);
函数模板的重载
template<typename T> const T& min(const T& a,const T& b)
{return (a<b)? a:b;}
const char* min(const char *a,const char* b)
{return strcmp(a,b)<0 ? a:b;}
double min(double x,doule y)
{return (x<y)?x:y}
生成的函数模板地址作为参数
template<typename T> void f(T*)
void h(void )
template <typename T> void g(void )
int main()
函数模板的半有序
template<class T> void f(T);
template<class T> void f(T*);
template<class T> void f(const T*);
模板特化
显示特化
tempalte<class T>
const T& min(const T &a,const T &b)
{.....}
----
tempalte<>
const char* const& min<const char*> (const char* const &a,const char* const &b)
{.....}
min(s1,s2);
min<>(s1,s2);
-
<
const char*>-特化类型;用const char* 代替 T
半特化
代码的膨胀