Dobijam da se kod int i3=max<int> (i1, i2) poziva negenericka verzija iako sam ocekivala da ce ovo <int> naterati da se pozove genericka verzija.
Code:
#include <iostream>
using namespace std;
template <typename T>
T max(T i, T j)
{
cout<<"Ovo je genericka f-ja"<<endl;
return (i>j?i:j);
}
int max (int i, int j)
{
cout<<"Ovo je negenericka f-ja"<<endl;
return (i>j?i:j);
}
int main()
{
int i1=1;
int i2=2;
float f1=2.5;
float f2=3.5;
int i3=max<int> (i1, i2); //negenericku poziva?
cout<<"max(i1,i2)="<<i3<<endl;
float f3=max<float> (f1, f2);
cout<<"max(f1,f2)="<<f3<<endl;
int i4=max (i1, i2);
cout<<"max(i1,i2)="<<i4<<endl;
return 0;
}
#include <iostream>
using namespace std;
template <typename T>
T max(T i, T j)
{
cout<<"Ovo je genericka f-ja"<<endl;
return (i>j?i:j);
}
int max (int i, int j)
{
cout<<"Ovo je negenericka f-ja"<<endl;
return (i>j?i:j);
}
int main()
{
int i1=1;
int i2=2;
float f1=2.5;
float f2=3.5;
int i3=max<int> (i1, i2); //negenericku poziva?
cout<<"max(i1,i2)="<<i3<<endl;
float f3=max<float> (f1, f2);
cout<<"max(f1,f2)="<<f3<<endl;
int i4=max (i1, i2);
cout<<"max(i1,i2)="<<i4<<endl;
return 0;
}