230
When should I use std::move, and when should I let the compiler optimize?
For example:
using SerialBuffer = vector<unsigned char>;
// Let the compiler optimize it
SerialBuffer read(size_t size) const
{
SerialBuffer buffer(size);
read(begin(buffer), end(buffer));
// Return Value Optimization
return buffer;
}
// Explicit move
SerialBuffer read(size_t size) const
{
SerialBuffer buffer(size);
read(begin(buffer), end(buffer));
return move(buffer);
}
Which should I use?