理解使用std::forward 來轉送參數
在C 中,std::forward 提供了一種機制來保留將參數傳遞給另一個函數或可呼叫函數時的參考。使用它可以確保左值參數保持其左值引用,而右值參數保留其右值引用。
何時使用 std::forward
問題中的範例示範了std::forward 的有利使用。函數 foo 接受右值引用 (T&& arg) 並將其轉送給 bar。這允許 bar 接收 arg 作為右值引用,即使它最初是左值。
在參數中使用右值引用
是的,在參數聲明中使用 && 是在所有情況下都有效。但是,帶有 && 參數的函數可能會採用左值或右值引用。如果將左值傳遞給帶有 && 參數的函數,則函數無法修改左值的參考物件。
模板和轉發範例
在第二個函數範例中, std::forward 不是必需的,因為doSomethingElse 接受與傳遞給doSomething 的參數類型相同的可變數量的參數。但是,如果 doSomethingElse 需要轉發,您將使用與第一個範例類似的 std::forward。
多重轉發
正如答案中提到的,轉發一個參數更多超過一次通常是不可取的。這是因為轉發通常涉及移動參數,一旦移動,就不能再使用。 doSomething 將 args 轉發到 doSomethingElse 和 doSomethingWeird 的範例將導致錯誤,因為第二次轉送會嘗試移動已移動的物件。
以上是** std::forward 如何確保 C 中正確的參數引用保存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!