I just started reading your article and i got confused.As per my understanding after reading starting of your article.i got some doubts.Eg:
T max(T t1, T t2)
if (t1 > t2)
std::cout<<max<int>120,14.55);//=>you have explained like here if i explicitly mention one data type,other would be deducted from the argument type(14.55) by the compiler.That means T max(T t1, T t2)becomes T max(int t1,double t2).But when i compiled it i got the below warning
warning: passing double for argument 2 to T max(T, T) [with T = int].Then why this warning came is my question.
also since we are using only T,if i mention max<int>,then T max(T t1, T t2) should be like this int max(int t1, int t2) na??
Please clear my doubts.else i cant proceed further