[英]Can't understand move semantics
在一個簡單的示例中,如下所示:
struct MyClass {
MyClass() {}
MyClass(const MyClass&) {}
};
int main(){
std::vector<MyClass> objects;
MyClass obj1;
objects.push_back(obj1);
for (auto&& obj: object) {
}
return 0;
}
auto &&如何工作? 該類沒有任何移動支持,此代碼應該做什么? 我不明白
從引用序列的迭代器類型獲得的類型中推導出類型; 這是左值引用MyClass&
。 通過“引用折疊”規則,嘗試推斷類型“ 右值引用到左值引用”給出左值引用類型。
因此,將auto&&
推導為MyClass&
。
如果序列具有給出右值引用的迭代器類型,則將其推導為MyClass&&
,如果該類支持它們,則啟用移動語義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.