C 11 中make_unique 的自訂實作
make_unique 是C 14 中引入的一個實用函數,用於建立具有動態分配實例的unique_ptr 物件。當不需要原始指標並且需要所有權管理時,這非常有用。但是,如果您的編譯器不支援 make_unique,則可以使用自訂模板函數輕鬆實現。
要寫 make_unique,請使用以下範本宣告:
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );</code>
此範本採用類型 T 和可變數量的參數 Args。以下實作建立一個 unique_ptr 對象,其中包含使用提供的參數構造的新 T 實例:
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
std::forward
make_unique 的此自訂實作模仿標準版本的行為,讓您在 C 中建立 unique_ptr 物件不支援 make_unique 的 11 個環境。
以上是如何在 C 11 中實現“make_unique”以增強所有權管理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!