如果空类的大小不能为 0,那么 std::tuple 有何魔力,使得 unique_ptr 的 sizeof 在 64 位机器中返回 8?
在 unique_ptr 中,成员定义为:
typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
__tuple_type _M_t;
其中 _Dp 是删除器类。
编译器是gcc版本4.7.1(Debian 4.7.1-7)
原因是,typename _Dp = default_delete<_Tp>
是一个空类并且tuple
模板采用空基类优化。
如果您实例化unique_ptr
使用非默认删除,您应该会看到大小增加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)