gcc C++0x unique_ptr 实现太龌龊了
版本: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
帅哥如果你这一点空间都觉得大的话,不妨去看一下gcc下成员函数指针的大小是多少,呵呵。
关键是"有无必要",C++的设计哲学是"不为不使用的feature付出代价"