在 C 11 中,沒有內建的 std::make_unique 函數,它允許簡潔地實例化唯一指標。開發人員發現語法
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
過於冗長,並提出了一種替代語法:
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
這種方法簡化了唯一指針的創建並減少了代碼重複。
std::make_unique 的建議實作透過 std::forward 採用完美轉送將參數傳遞給建構函式。完美轉發確保函數參數以最有效的方式傳遞,保留其原始類型和值類別(例如左值、右值)。
在make_unique 實作中,語法
std::forward<Args>(args)...
可以解釋如下:
在一起,它們實現了完美透過確保參數以正確的值類別和類型傳遞給建構函式來進行轉發。
Herb Sutter,C 主席標準化委員會已承認在 C 11 中未包括 std::make_unique 的監督,並表示將在未來版本中添加它。建議的實現與問題中提供的實現相同。
隨著 C 14 的引入,std::make_unique 得到了標準化,為創建唯一指標提供了所需的簡潔語法。
以上是`std::make_unique` 如何在 C 中實現完美轉送?的詳細內容。更多資訊請關注PHP中文網其他相關文章!