簡體   English   中英

為什么unique_ptr :: reset沒有帶刪除的重載?

[英]Why doesn't unique_ptr::reset have overloads that take a deleter?

有沒有一個原因, unique_ptr::reset沒有帶有const deleter&deleter&&重載來匹配它的構造函數,這些構造函數將這些作為第二個參數?

unique_ptr存儲的刪除器將被復制分配或移動分配來自reset的參數。 如果刪除器是不可復制的或不可移動的,則調用相應的reset重載將無法編譯。 這似乎與構造函數的一致行為。

我想添加它,但你可以使用移動賦值運算符獲得等效的功能:

ptr = unique_ptr<T, D>(new T(another_value), D(another_state));

因此,為了保持API合理地小,我選擇不對reset說同樣的事情。

更新

我生活和學習......

語法實際上可以比我上面顯示的簡單得多:

ptr = {new T(another_value), D(another_state)};

因為刪除器存儲在構造中的對象中。 由於刪除器類型是模板參數,因此在構造之后無法“轉換”類以使用另一個類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM