J'essaie d'utiliser std :: for_each pour sortir le contenu des vecteurs, qui peuvent contenir différents types. J'ai donc écrit une fonction de sortie générique comme ceci:En C++ comment puis-je utiliser une fonction template comme troisième paramètre dans std :: for_each?
template<typename T> void output(const T& val)
{
cout << val << endl;
}
que je voudrais utiliser avec: dans la déclaration for_each
std::for_each(vec_out.begin(), vec_out.end(), output);
mais le compilateur se plaint de « ne pouvait pas déduire un argument de modèle ». Se plaint également avec "Un modèle de fonction ne peut pas être un argument à un autre modèle de fonction".
N'est-ce pas possible? J'aurais pensé que le compilateur connaîtrait le type de vec_out (son vecteur) et devrait donc instancier la fonction "output (const double & val)"?
Si cela ne fonctionne pas, comment puis-je obtenir une fonctionnalité STL similaire sans écrire de boucles manuelles?
Je suis tout à fait nouveau pour C++ et encore apprendre les ficelles du métier :-)
désolé, vec_out est de type
vector
, pas de vecteur. – PowerApp101A la fois dirkgently et Naveen fourni la bonne réponse, que je comprends maintenant ... merci! – PowerApp101
Marquer les réponses comme acceptées afin que les lecteurs plus tard savent (de la liste de la page principale) –