It’s a good question and the fact that you’re asking it shows that you’re paying attention to your code. However, the good news is that in this particular case, there’s an easy way out.
The first, clean method is the correct way of doing it. The compiler will eliminate unnecessary copies, in most cases (usually where it makes sense).
EDIT (6/25/2016)
Unfortunately it seems that David Abaraham’s site has been offline for a few years now and that article has been lost to the ethers (no archive.org copy available). I have taken the liberty of uploading my local copy as a PDF for archival purposes, and it can be found here.