move
無條件地將它的引數轉型為右值參考,因而表示如果其類型已啟用移動,就可以移動它。
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
參數
參數 |
描述 |
---|---|
Type |
根據傳入 Arg 之引數的類型 (以及參考摺疊規則) 推算的類型。 |
Arg |
要轉型的引數。 雖然 Arg 的類型似乎當做右值參考指定,move 也接受左值引數,因為左值參考可以繫結到右值參考。 |
傳回值
Arg 做為右值參考,不論它的類型是否為參考類型。
備註
樣板引數 Type 並非要明確指定,而是根據傳入 Arg 之值的類型推算。 Type 的類型是根據參考摺疊規則進一步調整。
move 不會移動它的引數。 相反地,透過無條件地將其引數 (可以是左值) 轉型為右值參考,如果其類型已啟用移動,它可以讓編譯器後續移動 (而不是複製) 傳入 Arg 的值。 如果其類型未啟用移動,會複製它。
如果傳入Arg 的值為左值 (也就是它有名稱或它的位址可以使用),當移動時它會失效。 在移動之後,請不要使用它的名稱或位址來參考傳入 Arg 的值。
需求
標頭:<utility>
命名空間: std