From the move page of the cppreference
Unless otherwise specified, all standard library objects that have been moved from are placed in a valid but unspecified state. That is, only the functions without preconditions, such as the assignment operator, can be safely used on the object after it was moved from
So, from the example on the same page, this code below is considered undefined behaviour
vector<string> v_string;
string example = "example";
v_string.push_back(move(example));
cout << example << endl;
MSVC will output nothing on the console, but if I do this
vector<int> v_int;
int number = 10;
v_int.push_back(move(number));
cout << number << endl;
will output 10. Is there a reason why this happens? Or is it always undefined behavior?
Aucun commentaire:
Enregistrer un commentaire