首页 > 后端开发 > C++ > 为什么 `std::shared_ptr` 没有专门针对数组类型?

为什么 `std::shared_ptr` 没有专门针对数组类型?

Linda Hamilton
发布: 2024-11-10 02:47:02
原创
403 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板