So I have a constructor that takes a vector<num>& and them std::move's this reference. Isn't this objectively better than taking vector<num> if my intention is to move the argument?
In the second case, as I see it, it's guaranteed that no copies will be inadvertently created when they pass the vec to the constructor.
For the first case, maybe the compiler might optimize out the copy with a move, maybe not, or maybe the user will explcitly do foo(std::move(my_vec));, maybe not...in sum, there's no guarantee that it will be moved.
I understand that if I do use a l-value reference, I wouldn't be able to accept temporaries. Is there any other drawback(s) to it?