智能指针更改
2002年2月对Boost智能指针的更改引入了许多变化。由于以前版本的智能指针已经使用了很长一段时间时间,有一个图书馆用户更改内容的详细列表是很有用的观点。
注意,对于不太支持成员模板的编译器使用了单独的实现,该实现缺少许多新功能就像旧版本一样。
需要更改代码才能利用的功能
- 智能指针类模板现在都有自己的头文件。对于兼容性<boost/smart_ptr.hpp>header现在包含四个经典智能指针类的header模板。
- 这个弱_ptr模板已添加。
- 新的共享ptr和共享数组放宽以下要求实例化时,pointed-to对象的析构函数必须可见共享ptr析构函数。这使得在类中拥有shared_ptr成员变得更容易,而不需要显式析构函数。
- 在创建共享ptr或共享数组.
-
共享static_cast和共享动态广播函数模板是提供了哪些工作共享ptr和弱_ptr作为static_cast(统计_广播)和dynamic_cast(动态_广播)做指针。
- 自分配错误功能已从中删除shared_ptr::重置, 尽管它仍然存在于作用域_ptr中的、和标准::auto_ptr. 打电话重置指针指向已经由共享ptr导致未定义的行为(如果断言已关闭)。
- 这个引导_SMART_PTR_CONVERSION功能已被删除。
-
shared_ptr<无效>现在允许。
提高健壮性的功能
实施详细信息
- 赋值运算符实现和重置已通过使用“复制并交换”习语修复。
- 添加断言以检查各种功能的前提条件;然而,由于这些使用了新的<boost/assert.hpp>标头,默认情况下禁用断言。
- 部分专业化标准::less已被替换为操作员<在不依赖未定义的情况下完成相同任务的重载行为。
- 的不正确过载标准::交换已被替换为增强::交换, 它对于泛型编程有许多相同的优点,但没有违反了C++标准。
$日期$
版权所有2002 Darin Adler。根据Boost软件许可证发布,版本1.0. 参见随附文件许可证_1_0.txt或复制于http://www.boost.org/LICENSE_1_0.txt.