
Envoy� par
nokomprendo
Pour la lambda [...] et je crois qu'il manque un return :
Merci, c'est corrig�.

Envoy� par
nokomprendo
Pour la lambda, personnellement je pr�f�re expliciter la fermeture
Dans le cas g�n�ral je n'ai pas trop d'avis l� dessus. Mais ici on se sert de la lambda comme on aurait pu utiliser std::bind ou un simple foncteur. Plus le code de la lambda sera court plus il sera facile de voir que l'on cherche � transformer un appel de fonction � N arguments en un appel de fonction sans argument. Donc dans ce cas, j'ai une petite pr�f�rence � ne pas expliciter la liste de capture ainsi que le type de retour.

Envoy� par
nokomprendo
Par contre, je ne suis pas fan de la lambda ici car il y doit y avoir un (l�ger) surco�t pour la cr�er et de plus on ne peut pas sp�cifier la r�f�rence captur�e en const (ou du moins, je ne sais pas comment faire). Donc, je pr�f�re vraiment :
1 2 3
|
auto f = std::async(std::launch::deferred, resultatBackward, std::cref(monGraphe) );
// ... |
S'il y a un surco�t d� � la lambda, il faut changer de compilateur. Les lambdas sont forc�ment inline et devraient �tre inlin�.
J'aime bien la lambda car elle permet de ne pas oublier les std::ref ou std::cref et quelle s'adapte automatiquement si ces "d�tails" changent.
Oui, on ne peut capturer que par copie ou r�f�rence. Mais rien n'emp�che d'avoir un code proche de :
std::async(std::launch::deferred, [&]() { return resultatBackward(fonction_qui_prend_un_T_ref_et_qui_retourne_un_T_const_ref(monGraphe)); });
Partager