jeudi 27 juillet 2017

Using std::move, and preventing further use of the data

I have been using c++11 for some time but I always avoided using std::move because I was scared that, while reading a library where the user does not have the access to the code, it would try to use the variable after I move it.

So basically something like

void loadData(std::string&& path);

Would not be enough to make the user understand that it will be moved. Is it expected that the use of && would imply that the data will be moved. I know that comments can be used to explain the use case, but a lot of people dont pay attention to that.

Is it safe to assume that when you see a && the data will be moved, or when should I use std::move and how to make it explicit from the signature.

Aucun commentaire:

Enregistrer un commentaire