
Alexandre Duret-Lutz <duret_g@lrde.epita.fr> writes: [...]
Pour autant que je sache, la première aussi, car elle est sujette à l'optimisation de la valeur de retour nommée (sur le net: "Named return value optimization" ou encore "RVO").
C'est un sujet qu'on a discuté il y a quelques années au labo, quelqu'un en a peut-être encore des traces quelque part.
En tout cas c'est la raison pour laquelle on préfère écrire
A operator+(const A& l, const A& r) { A a(l) a += r; return a; }
plutôt que
A operator+(const A& l, const A& r) { return A(l) += r; }
si le compilateur ne supporte pas nrvo, il est preferable de faire: A operator+(A l, const A& r) { return l += r; } cf. http://www.boost.org/libs/utility/operators.htm#symmetry les gars de boost ont choisi de supporter les deux syntaxes. d'apres leurs headers, cette optimisation est dispos seulement sur gcc >= 3.1 et icc >= 6. -- js@lrde.epita.fr | pouet@mouret.org "creating the future" (c) framfab