- Évite les using namespace std, voir:
[ Lien ]
- Entrer => Entrez :p
- Pas besoin de parenthèse dans le return de ton template min.
Quel est le problème ? C'est simple, lorsque tu utilises un template, c'est à dire quand tu l'appelles, il faut normalement préciser les arguments et les paramètres.
Si ta fonction template est:
template <typename T>
void toto(T pouet)
{
}
Alors il faut l'appeler comme ceci:
toto<int>(9);
toto<double>(9.0);
toto<std::string>("kikoo");
Il faut préciser le paramètre qui correspond à l'argument !
Il y a des cas où le paramètre est déduit par le compilateur, et des cas ou il ne l'est pas.
Ex:
toto<int>(9.0); // Cas non déduit
toto("kikoo"); // Cas déduit, le compilateur sait que c'est un toto<std::string>("kikoo");
Dans ton code, le problème venait du fait, qu'il ne savait pas si tu passais des int& ou des int.
Il faut donc lui préciser explicitement que tu veux passer des int.
Ton code devient:
Code C/C++ :
#include <iostream>
template <class T>
T min(T a,T b)
{
return (a < b) ? a : b;
}
int main()
{
int a,b;
std::cout << "Entrez deux entiers: " << std::endl;
std::cin >> a >> b;
std::cout << min<int>(a,b) << std::endl;
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question