Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

版本 1.34.0

版本 1.34.0

2007年5月12日 12:00 GMT

文档

下载
平台文件
Unixboost_1_34_0.tar.bz2
boost_1_34_0.tar.gz
Windowsboost_1_34_0.zip

新增库

  • Foreach 库: 用于轻松迭代序列元素的 BOOST_FOREACH 宏,由 Eric Niebler 提供。
  • 状态图库: 可以使用易于阅读和维护的 C++ 代码实现任意复杂的状态机,由 Andreas Huber 提供。
  • TR1 库: C++ 标准库扩展技术报告的实现,由 John Maddock 提供。该库本身并不实现 TR1 组件,而是一个薄包装器,它将包含您的标准库的 TR1 实现(如果有的话),否则它将包含 Boost 库的等效实现,并将它们导入到命名空间 std::tr1 中。重点包括:引用包装器、智能指针、result_of、函数对象绑定器、多态函数包装器、类型特征、随机数生成器和分布、元组、固定大小数组、哈希函数对象、正则表达式和复数附加算法。
  • Typeof 库: Typeof 运算符模拟,由 Arkadiy Vertleyb 和 Peder Holt 提供。
  • Xpressive 库: 可以写成字符串或表达式模板的正则表达式,并且可以利用上下文无关文法的功能递归地相互引用和自引用,由 Eric Niebler 提供。

更新库

  • Assign 库:
    • 通过新函数 ptr_map_insert() 支持 ptr_map<key,T>
    • 当容器持有指向抽象基类的指针时,支持初始化指针容器
  • Date_time 库:
    • 支持新的美国/加拿大时区规则和其他错误修复。有关详细信息,请参阅更改历史记录
  • 文件系统库: 为提交给 C++ 标准委员会的 TR2 做准备的重大升级。变更包括
    • 国际化,由类模板 *basic_path*、*basic_filesystem_error*、*basic_directory_iterator* 和 *basic_directory_entry* 提供。
    • 通过消除用于识别本机格式的特殊构造函数来简化路径接口。
    • 合理化谓词函数设计,包括添加几个新函数。
    • 通过参考POSIX(ISO/IEEE 单一 Unix 标准)更清晰地规范,并提供 Windows 和其他操作系统的规定。
    • 尽可能保留现有的用户代码。
    • 更高效的目录迭代。
  • Function 库: Boost.Function 现在实现了一个小缓冲区优化,当复制或构造存储小型函数对象的 Boost.Function 对象时,可以极大地提高性能。例如,当放入 Boost.Function 对象时,bind(&X:foo, &x, _1, _2) 不需要堆分配。
  • Functional/Hash 库:
    • 使用标准类的声明,以便库不需要包含所有头文件
    • 已弃用<boost/functional/hash/*.hpp>头文件。
    • 添加对 BOOST_HASH_NO_EXTENSIONS 宏的支持,该宏禁用对 TR1 的扩展
    • 对浮点数的哈希函数进行了少量改进。
  • Graph 库:
  • MultiArray 库: Boost.MultiArray 现在默认提供 operator[] 的范围检查。可以通过在包含multi_array.hpp之前定义宏 BOOST_DISABLE_ASSERTS 来禁用范围检查。已修复 multi_array::resize() 中与存储顺序相关的错误。
  • Multi-index Containers 库:
  • Optional 库:
    • boost::none_t boost::none 现已添加到 Optional 的文档中
    • 关系运算符现在直接支持类型为 'T''none_t' 的参数
    • operator->() 现在也适用于引用类型。
    • 添加了辅助函数 make_optional(val), make_optional(cond,val) get_optional_value_or(opt,alternative_value)
    • 添加了构造函数,该构造函数采用布尔条件(以及一个值)。
    • 添加了成员函数 get_value_or(alternative_value)
    • 修复了与 mpl::apply<> 的不兼容错误。
    • 修复了未初始化左值的转换赋值错误。
  • Parameter 库:
    • 每个 ArgumentPack 现在都是一个有效的MPL 正向序列
    • 添加了对未命名参数(其关键字从其类型推导的参数)的支持。
    • 添加了对命名和未命名模板参数的支持。
    • 新的重载生成宏直接解决了转发问题
    • 另请参阅下面的 Python 库更改。
  • Pointer Container 库:
    • 支持通过Boost.Serialization进行序列化。
    • 可以通过在包含任何头文件之前定义宏 BOOST_PTR_CONTAINER_NO_EXCEPTIONS 来禁用异常。如果定义了 BOOST_NO_EXCEPTIONS,则默认情况下定义此宏。
    • 添加了额外的 std::auto_ptr<T> 重载,以便也可以将 std::auto_ptr<T> 而不是仅 T* 参数传递给成员函数。
    • transfer() 现在具有更弱的要求,以便可以将对象从 ptr_container<Derived> 传输到 ptr_container<Base>
  • Python 库:
    • Boost.Python 现在自动将 C++ 签名附加到文档字符串。新的 docstring_options.hpp 头文件可用于控制文档字符串的内容。
    • stl_input_iterator,用于将 Python 可迭代对象转换为 STL 输入迭代器,由 Eric Niebler 提供。
    • 添加了对 void* 转换的支持。
    • 集成了对使用参数库构建的 C++ 函数的包装支持;文档字符串会自动识别关键字名称。
    • 增强 API 以更好地支持嵌入(boost::python::import()boost::python::exec()boost::python::exec_file())。
  • Signals 库: Robert Zeh 对信号调用性能进行了更多改进。
  • Smart Pointers 库:
  • 字符串算法库:
    • lexicographical_compare(字典序比较)
    • join(连接)
    • 新的比较谓词 is_less(小于) 和 is_not_greater(不大于)。
    • 在各种算法(*_head/tail*_nth)中支持负索引(类似 Perl)。
  • Wave 库:
    • Wave 现在可以正确识别 C++ 标准规定的 pp-number 标记,这些标记在从库返回之前会被转换为 C++ 标记。
    • 添加了几个新的预处理钩子。有关完整描述,请参阅相关的文档页面:上下文策略
    • 已为生成的 Wave 库添加了共享库 (dll) 支持。
    • 整体错误处理已得到改进。现在可以在发出错误或警告后恢复并继续。
    • 添加了对在生成的输出流中可选保留注释和/或完整空格的支持。
    • Wave 库现在执行自动包含保护检测,以避免在适当时多次访问头文件。
    • Wave 工具已添加了完整的交互模式。现在,Wave 工具可以像 Python 或 Perl 一样用于交互式地试用 BOOST_PP 宏。此外,现在可以加载和保存交互式会话的当前状态(宏表等)。
    • 整体性能提高了 40-60%,具体取决于要处理的文件。
    • 添加了对新编译指示的支持,允许从预处理的源代码内部控制某些库功能(部分输出重定向,控制生成的空格和 #line 指令)。
    • 添加了对 #pragma message "..." 的可选支持。
    • 此版本还包括许多错误修复和使用改进。有关更改的完整列表,请参阅库的 更改日志

支持的编译器

Boost 在各种编译器和平台上进行了测试。由于 Boost 库依赖于并非所有编译器都提供的现代 C++ 功能,因此并非所有 Boost 库都适用于每个编译器。以下编译器和平台已使用 Boost 进行了广泛测试,但许多其他编译器和平台也可以使用。有关更多信息,请参阅回归测试结果

  • Mac OS X 上的 Apple GCC 4.0.1。
  • Windows 上的 Borland C++ 5.8.2。
  • GNU C++
    • Linux 上的 3.2.x、3.3.x、3.4.x、4.0.x、4.1.x
    • Solaris 上的 4.1.x
    • Windows 上的 3.4.x
  • Windows 上的 Intel C++ 9.1,Linux 上的 9.0。
  • Windows 上的 Metrowerks CodeWarrior 9.4。
  • Microsoft Visual C++ 6.0(sp5,带和不带 STLport)、7.0、7.1、8.0。注意:Boost 不支持 Visual C++ 8.0 附带的非标准“安全”C++ 库,这可能会导致 Boost 头文件和其他符合标准的 C++ 代码发出许多虚假警告。要抑制这些警告,请定义宏 _SCL_SECURE_NO_DEPRECATE
  • Solaris 上的 Sun Studio 11

致谢

Thomas Witt 管理了此版本。

许多人贡献了他们的时间和专业知识才使此版本成为可能。特别感谢 Vladimir Prus 使 Boost.Build 版本 2 成为现实,David Abrahams 撰写了新的入门指南,以及 Greg D. 回答了无数问题。