3
正如我所料此代碼不能編譯,因爲此舉給你右值,你不能分配任何東西右值:爲什麼我可以給rValue字符串賦值?
int a, b;
move(a) = b;
的問題是,爲什麼下面的代碼編譯?
string a, b;
move(a) = b;
正如我所料此代碼不能編譯,因爲此舉給你右值,你不能分配任何東西右值:爲什麼我可以給rValue字符串賦值?
int a, b;
move(a) = b;
的問題是,爲什麼下面的代碼編譯?
string a, b;
move(a) = b;
原因可能有點令人沮喪。第一種形式是內置賦值,並且確實不適用於右值引用。
第二個陳述實際上是move(a).operator=(b)
。這是一個函數調用。即使函數有些不尋常的名字,你也可以在rvalues上調用函數。