// 模版编译
// 1.实例化前,语法检查!
// 2.实例化时,检查模版代码,是否调用有效,如某些实例化类型不支持某些函数调用!
// 有模版函数与非模板函数,共存时,优先调用非模板函数!
// - - - - - - - - - - - -- - -- - - - - - - - - return type ...
template <typename T1,typename T2,typename rt>
inline RT max(T1 const& a, T2 const& b);
...
max<int,double, double>(4,4.2);//ok
template <typename RT, typename T1,typename T2>
max<double>(1,4.2) //ok return double
// - - - - - - - - - - - -- - -- - - - - - - - - - different types of parameter...
template <typename T1,typename T2>
inline T1 max(T1 const &a , T2 const &b)
{
return a<b:?b:a;
}
//可能要转化T2位返回...
//T2 返回是,会创建临时对象,不能通过应用返回
// - - - - - - - - - - - -- - -- - - - - - - - - - - - - - - - -- - - - - - -