Рассмотрим этот код:
#include <iostream>
using namespace std;
void Func(int&& i) {
++i;
}
int main() {
int num = 1234;
cout << "Before: " << num << endl;
Func(std::move(num));
cout << "After: " << num << endl;
}
Его вывод:
Before: 1234
After: 1235
Ясно, что i
изменяется внутри Func
, поскольку он привязан к параметру i
после того, как "преобразован" в ссылку r-значения на std::move
.
Ну, моя точка:
Перемещение объекта означает передачу права собственности на ресурсы с одного объекта на другой. Однако встроенные типы не содержат ресурсов, потому что они сами являются ресурсами. Нет смысла передавать ресурсы, которые они хранят. Как показано в примере, значение num
изменяется. Его ресурс, его я, является тем, который изменяется.
У встроенных типов есть семантика перемещения?
Кроме того, Do встроенные объекты типа после его перемещения (если есть) четко определенного поведения?