首页  >  文章  >  后端开发  >  为什么 C 标准库中没有“std::shared_ptr”?

为什么 C 标准库中没有“std::shared_ptr”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-10 04:07:53458浏览

Why isn't there a `std::shared_ptr` in the C   standard library?

深入探究 std::shared_ptr 的缺失

在 C 标准库中,存在一个用于数组的 std::unique_ptr 的专用版本 std::unique_ptr 可以在其析构函数中正确调用 delete[]。然而, std::shared_ptr 缺乏这样的专业化,因此需要使用像问题中展示的自定义删除器。

缺乏专业化的理由

缺少 std::shared_ptr ;源于多种因素的综合作用:

  • LWG 讨论: 库工作组 (LWG) 考虑了这个想法,但最终因围绕针对 shared_ptr.
  • 缺乏正式提案:尽管进行了非正式讨论,但尚未向 LWG 提交关于创建 std::shared_ptr 的正式提案;.

现状与未来展望

尽管存在历史性的犹豫,但最近的讨论重新点燃了 LWG 成员的兴趣。虽然原型已经实施,但正式提案仍然悬而未决。 std::shared_ptr 的可行性和最终采用仍不确定。

即将开发

open-std.org 草案 TS(技术规范)提出对 std::shared_ptr 的数组支持。如果采用该 TS,将引入 std::shared_ptr 。作为 C 标准的一部分。

C 17 更新

草案 TS 现已合并到 C 17 中,为 std::shared_ptr。详情请参考shared_ptr::shared_ptr()的情况3。

以上是为什么 C 标准库中没有“std::shared_ptr”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn