首頁 > 後端開發 > C++ > 為什麼 C 中沒有 std::shared_ptr 專業化?

為什麼 C 中沒有 std::shared_ptr 專業化?

DDD
發布: 2024-11-10 06:48:03
原創
989 人瀏覽過

Why Isn't There a std::shared_ptr Specialization in C  ?

std::shared_ptr;特化

C 標準庫包含數組的std::unique_ptr 特化,它可以從其析構函數中正確地呼叫delete[]。然而,std::shared_ptr 顯然不存在類似的專門化。此行為需要使用者手動提供明確呼叫delete[]的刪除器。

這種遺漏是疏忽還是有意為之?

缺席原因

C 庫工作小組 (LWG) 已考慮 std::shared_ptr 的可能性。專業化,但圍繞附加功能的爭議阻止了它的包含。

具體來說,std::shared_ptr 上的算術運算;被提議但遭到反對。最終,由於缺乏官方提案和優先級,導致該功能被排除在標準之外。

近期進展

非正式地,該主題再次在LWG,並且已經開發出原型。雖然此功能有可能成為有價值的工具,但它是否包含在標準中仍然不確定。

目前狀態

從 C 11 開始,std:: Shared_ptr;專業化尚未標準化。然而,有一個正在進行的 TS 提案草案 (N4077),引入了對 std::shared_ptr 的數組支援。

更新 (2017)

C 17 標準包括支援對於 std::shared_ptr 中的陣列(shared_ptr::shared_ptr() 的情況 3)。

以上是為什麼 C 中沒有 std::shared_ptr 專業化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板