我已經做了簡單的測試以瞭解更好的移動語義。輸出結果對我而言是意外的。貝婁是我的測試功能:爲左值移動語義
template<class T>
void test(T&& v)
{
v++;
}
void main()
{
int v = 1;
test(std::move(v));
std::cout << "Output:" << v << std::endl;
}
我的期望是: 輸出:1 但真正的結果是: 輸出:2
我認爲如下 - 我使用std ::移動(V),因爲我已經轉換爲「右值」,並且測試函數將與時態變量一起工作。因此結果應該是輸出:1. 我的結論有什麼問題?
void main不符合C++標準。 – 2017-06-01 12:45:31
'std :: move'的名字被嚴重挑選出來,這可能會讓你感到困惑。它並沒有實際移動任何東西。它只是將一個左值賦予一個右值,使得*可能*做出一個移動。 –