Actually, using a reference will make it slower! If you break down the call
```C++
aPFCluster.setRecHitFractions(std::move(temps));
```
The by value argument is created by calling ```std::vector<...>::std::vector( std::vector<>&&)``` (because of the ```std::move()```).  This is the move constructor and just takes ownership of the pointers held by temps (no expensive operation). Then in the body of the function we will call ```std::vector<...>::operator=(std::vector<>&&)``` which is the move assignment that once again moves the internal pointers.

If you made the argument to the function a ```const std::vector<>&``` then the call to ```setRecHitFractions``` using an ```std::move()``` will not compile since you can't convert a 'T&&' to a 'const T&'.