gcc C++0x unique_ptr 实现太龌龊了

本文探讨了g++4.6.0版本中unique_ptr的设计选择,包括使用额外指针空间来支持自定义删除器及使用tuple实现带来的额外依赖。作者对比了VC10的优化方案,并引用了Scott Meyer的观点。

版本:g++ 4.6.0

龌龊之处:

1. 占用 2 ptr 空间,因为 unique_ptr 要支持 custom delete, so g++ 要用额外的一个 ptr 来保存 custom 对象

为什么不用 empty base class 来优化? VC10 有这个优化。

2. 引入不必要的依赖,使用 tuple<T*, Deleter> 作为数据成员!

关 tuple 屌事?

明白了,使用 tuple 是因为 tuple 实现使用了 empty class optimization, 所以在使用 default deleter 时,只占用 1 ptr, Scott Meyer 说占用 2 ptr 的是 g++ 4.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值