首页 >后端开发 >C++ >为什么 `std::shared_ptr` 没有 C 中数组的专门化?

为什么 `std::shared_ptr` 没有 C 中数组的专门化?

DDD
DDD原创
2024-11-20 16:18:16860浏览

Why Doesn't `std::shared_ptr` Have a Specialization for Arrays in C  ?

std::shared_ptr 的特化

在 C 中,std::unique_ptr 有一个用于处理数组的模板特化,它在其析构函数中适当地调用delete[]。然而,std::shared_ptr 不存在这样的专门化。

为什么缺席?

最初,疏忽可能是由于时间限制,因为 LWG (C委员会)还有许多其他紧迫事务。然而,缺乏正式提案也起到了一定作用。

近期进展

非正式的讨论使这个问题重新回到了最前沿,并且原型已经实现。然而,正式提案仍在等待中。一些 LWG 成员认为对 std::shared_ptr 的数组支持将是一个有价值的补充。

当前状态

从 C 14 开始,没有内置的专门化对于 std::shared_ptr 。要处理数组,必须提供一个调用 delete[] 的自定义删除器。

更新

2014 年,提出了一份技术规范 (TS) 草案来添加数组支持 std::shared_ptr。该提案已在 C 17 中实现。

以上是为什么 `std::shared_ptr` 没有 C 中数组的专门化?的详细内容。更多信息请关注PHP中文网其他相关文章!

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