Disons que j'ai ces lignes de code ;
std::vector<int> ints;
std::for_each(ints.begin(), ints.end(), [](int& val){ val = 7; });
Cependant, je ne veux pas spécifier le type d'argument dans mes fonctions lambda, c'est-à-dire que je veux écrire quelque chose comme ceci ;
std::for_each(ints.begin(), ints.end(), [](auto& val){ val = 7; });
Y a-t-il un moyen d'y parvenir ?
(boost::lambda n'a pas besoin que les types soient spécifiés...)
Mise à jour :
Pour l'instant, j'utilise une macro : #define _A(container) decltype(*std::begin(container))
pour que je puisse le faire :
std::for_each(ints.begin(), ints.end(), [](_A(ints)& val){ val = 7; });
1 votes
Au moins pour cela, pourquoi ne pas simplement
std::fill(ints.begin(), ints.end(), 7);
?8 votes
Oui, dans ce cas std::fill pourrait être utilisé, cependant, ce n'est pas ma question.
0 votes
C'est pourquoi je l'ai inscrit comme un commentaire, et non comme une réponse...