When should std::move be used on a function return value? [duplicate]
In the case of return std::move(foo); the move is superfluous because of 12.8/32: When the criteria for elision of a copy operation are met or would be met save for the fact that the source object is a function parameter, and the object to be copied is designated by an lvalue, overload resolution to select … Read more