boost:::bind et ref - C++ - Programmation
Marsh Posté le 20-04-2009 à 19:42:16
truc de ouf sans ça marche pas, ça à avoir avec une histoire de copie ?
Marsh Posté le 20-04-2009 à 21:38:17
bind stocke ses valeurs bindées par valeur et les passe ensuite à la fonction/foncteur par référence, si cette dernière le supporte.
boost::ref sert à le forcer à stocker ses valeurs bindés par référence.
bind( f2, _1 ); // tu bind une copie de f2
bind( ref( f2 ), _1 ); // tu bind une référence vers f2
Marsh Posté le 21-04-2009 à 08:47:37
ReplyMarsh Posté le 21-04-2009 à 12:28:30
c'est pas plutot l'histoire du constructeur de recopie qui est privé ?
c'est quoi le soucy en faite avec l'() qui n'est pas const, j'aimerais comprendre
Marsh Posté le 25-04-2009 à 19:16:22
Joel F a écrit : Tres certainement parce que F2::operator() n'est pas const |
rien à voir...
Le résultat est différent car dans un cas on accumule sur f2, dans l'autre sur une copie anonyme et temporaire de f2.
F2 est un accumulateur, son opérator() ne peut pas être const.
Sans ref, comme bind travaille sur une copie, f2 n'est pas modifié et f2.s == 0
Marsh Posté le 20-04-2009 à 16:47:44
Hello,
dans la doc de bind il y a cet exemple :
Quel est l'intérêt d'utiliser ref ?
Merci.