首頁 >後端開發 >C++ >為什麼 `std::shared_ptr` 沒有專門針對數組類型?

為什麼 `std::shared_ptr` 沒有專門針對數組類型?

Linda Hamilton
Linda Hamilton原創
2024-11-10 02:47:02385瀏覽

Why Doesn't `std::shared_ptr` Have a Specialization for Array Types?

std::shared_ptr 的特化:一個謎

C 標準庫包含一個std 的專用範本: : unique_ptr 在其析構函數中適當地呼叫delete[]。然而, std::shared_ptr 缺乏類似的專業化,因此需要使用自訂刪除器來正確釋放陣列。

缺乏專業化的原因

最初,省略了 std::shared_ptr ;專業化似乎只是疏忽。然而,圖書館工作小組 (LWG) 內部並未就添加此類功能達成共識。主要的擔憂源自於對 shared_ptr 進行算術運算的建議,這項功能本來可以被丟棄。

最終,缺乏 std::shared_ptr事實證明,專業化在 C 標準中被剔除是決定性的。雖然 LWG 成員最近恢復了討論,但尚未落實任何正式提案。

當前狀態

儘管缺乏專門的模板,C 17 還是引入了部分數組支援對於shared_ptr,如shared_ptr::shared_ptr()方法的第三種情況中指定的。此更新允許使用shared_ptr建立和銷毀數組,儘管沒有專用專業化的便利性。

未來前景

TS(技術規範)草案 N4077概述了在shared_ptr中實現數組支援的潛在途徑,該功能最終被合併到C 17中。 C的持續發展可能會為該領域帶來進一步的增強,為使用共享指標的陣列管理提供額外的靈活性和表現力。

以上是為什麼 `std::shared_ptr` 沒有專門針對數組類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn