首页 > 后端开发 > C++ > 为什么 C 中没有 std::shared_ptr 专业化?

为什么 C 中没有 std::shared_ptr 专业化?

DDD
发布: 2024-11-10 06:48:03
原创
992 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板