Justement imagine que tu passe ton shared_ptr par copie, puis que tu le stock dans ton objet, tu as 2 copie (avec comptage de référence); certes avec les opérateurs de déplacement y a des chances qu'on ait pas la deuxième copie, mais en pre-c++11 (version boost) on a pas cette mécanique.
Si tu le passes par références pour le stocker tu n'as qu'une seule copie.
Cependant il faut bien faire attention lorsque l'on joue avec du multithread
[^] # Re: Godbolt
Posté par fearan . En réponse au journal Le quiz c++ de l'été. Évalué à 5.
Justement imagine que tu passe ton shared_ptr par copie, puis que tu le stock dans ton objet, tu as 2 copie (avec comptage de référence); certes avec les opérateurs de déplacement y a des chances qu'on ait pas la deuxième copie, mais en pre-c++11 (version boost) on a pas cette mécanique.
Si tu le passes par références pour le stocker tu n'as qu'une seule copie.
Cependant il faut bien faire attention lorsque l'on joue avec du multithread
https://stackoverflow.com/questions/3310737/should-we-pass-a-shared-ptr-by-reference-or-by-value
Il ne faut pas décorner les boeufs avant d'avoir semé le vent