Boost C++ 库

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

版本 1.44.0

版本 1.44.0

2010年8月13日 17:00 GMT

文档

下载
平台文件
Unixboost_1_44_0.tar.bz2
boost_1_44_0.tar.gz
Windowsboost_1_44_0.7z
boost_1_44_0.zip

新增库

  • 元状态机: 来自 Christophe Henry 的高性能、表达力强的 UML2 有限状态机。
  • 多边形: 来自 Lucanus Simonson 的针对具有整数坐标的平面多边形的布尔运算/剪裁、大小调整/偏移等功能。

更新库

  • 累加器:
    • 修正各种文档中的错误。
  • Asio:
    • 减少编译时间。(请注意,某些程序可能需要添加额外的 #include,例如,如果程序使用 boost::array 但没有显式包含 <boost/array.hpp>。)
    • 减少生成代码的大小。
    • 重构 deadline_timer 实现以提高性能。
    • 通过使用专用的隐藏线程来等待计时器,提高了 Windows 上的多处理器可伸缩性。
    • 改进了 asio::streambufasync_read()async_read_until() 的性能。这些读取操作现在在读取时使用 streambuf 的现有容量,而不是将读取限制为 512 字节。
    • 添加了可选的单独编译。要启用,请在程序的一个源文件中添加 #include <boost/asio/impl/src.cpp>,然后在项目/编译器设置中定义 BOOST_ASIO_SEPARATE_COMPILATION 来构建程序。或者,可以定义 BOOST_ASIO_DYN_LINK 以将单独编译的 Asio 构建为共享库的一部分。
    • 添加了新的宏 BOOST_ASIO_DISABLE_FENCED_BLOCK,即使启用了线程支持,也可以禁用完成处理程序周围的内存栅栏。
    • 重新编写了超时示例,以更好地说明典型的用例。
    • 确保处理程序参数作为 const 类型传递。
    • 修复了 null_buffers 变体 async_send_to 中不正确的参数顺序(#4170)。
    • 确保在 getaddrinfo 仿真中将 unsigned charisdigit 一起使用(#4201)。
    • 修复了处理非常小但非零超时的问题(#4205)。
    • 修复了将空缓冲区序列传递给组合读取或写入操作时发生的崩溃。
    • buffers_iterator 中添加了缺少的 operator+ 重载(#4382)。
    • 实现了在 Windows 上取消 null_buffers 操作。
  • 配置:
    • 添加了新的缺陷宏 BOOST_NO_COMPLETE_VALUE_INITIALIZATION
    • 添加了新的缺陷宏 BOOST_NO_0X_HDR_TYPEINDEX,修复了问题 #4274
    • 在 GCC 中添加了对代码可见性的支持。
    • 修复了问题 #4385#4324#4221#4182#4178#4152#4115#4112#4059#4041#4012
  • 文件系统:
    • 此版本包含库的版本 2 和版本 3。版本 3 是一次重大升级,将会破坏一些现有的用户代码,因此版本 2 是默认版本。鼓励用户迁移到版本 3。有关详细信息,请参阅“版本 2”和“版本 3”。
    • 修复共享库的符号可见性问题。
    • 修复各种小问题。
    • 修复的问题:#3863#4248
  • Foreach:
    • 添加 boost/foreach_fwd.hpp 用于 foreach 自定义点的向前声明,修复了 #3998
    • 删除针对 sun 编译器的过时解决方案,修复了 #4306
  • Fusion:
    • 添加了 fusion::reverse_foldfusion::iter_foldfusion::reverse_iter_fold#1623)。
  • 哈希:
    • 通过定义宏 BOOST_HASH_NO_IMPLICIT_CASTS 来防止在调用哈希函数时进行隐式转换的选项,这可以避免一些细微的问题。将来版本中可能会默认激活此选项。
  • Iostreams:
    • 对文件描述符类进行了几处修复,包括对 file_descriptorfile_descriptor_sourcefile_descriptor_sink 的构造函数和 open 方法进行了重大更改。有关详细信息,请参阅文档。如果定义 BOOST_IOSTREAMS_USE_DEPRECATED,仍然可以使用旧方法(#3323#3517#4335)。
    • 修复了压缩和解压缩方面的几个问题(#2318#4091#3348#2783#1579#3853)。
    • 以及其他一些杂项修复(#3851#3279#3689#2356#2996#4102#2998#1612#2325)。
    • 感谢 Steven Watanabe 对几乎所有这些修复的贡献。有关更多详细信息,请参阅发行说明
  • 数学:
    • 修复了瑞利分布的不正确范围和支持。
  • MPL:
    • 使 mpl::string 可以与 mpl::transform 一起使用。
  • 多索引容器:
    • 修复了在有序哈希索引中,当 ModifierRollback 是不同类型时,阻止将 modify_key 与回滚一起使用的错误(问题单 #4130)。
  • Proto:
    • **行为的轻微变化:**当使用 proto::and_ 作为转换时,应用*所有*转换,但只返回应用最后一个转换的结果。有关详细信息,请参阅 Proto 的发行说明
    • **行为的轻微变化:**proto::as_exprproto::as_child 不再通过表达式域的生成器运行已经是 proto 表达式的对象。有关详细信息,请参阅 Proto 的发行说明
    • **行为的轻微变化:**为了缩短编译时间,Proto 尽可能使用 proto::basic_expr 而不是 proto::expr。有关详细信息,请参阅 Proto 的发行说明
    • 添加对子域的支持。
    • 引入了每个域的 as_expras_child 自定义点,以允许对变量捕获行为进行特定于域的自定义。
    • proto::_default 转换也是一个语法,它匹配转换知道如何处理的表达式。
    • 添加了 proto::_void,一个无操作的基元转换,它什么也不做并返回 void
    • proto::pass_through 转换不剥离表达式包装器,修复了 #4175
    • 调用 proto 域时的常量正确性修复。
  • 正则表达式:
  • Spirit: Spirit V2.4,有关详细信息,请参阅“新增功能”部分。
  • 系统:
    • 将 system_category 和 generic_category 更改为函数,以符合 C++0x FCD。此更改可能会导致某些用户代码出现编译错误;解决方法是在对 system_category 和 generic_category 的引用中添加“()”,以便它们成为函数调用。
    • 修复共享库的符号可见性问题。
    • 修复的问题:#4254#3994#3474
  • 线程:
  • TR1:
    • 修复了 VC10 支持。
    • 即使在支持基于 C++0x decltype 实现的编译器上,std::tr1::result_of 也始终使用 TR1 ResultOf 协议。
  • 类型特征:
    • 在整个库中添加了对右值引用的支持,以及两个新的特征类 is_rvalue_reference 和 is_lvalue_reference。修复了 #4407#3804
    • 修复了问题单 #3621
  • uBLAS:
    • 新的赋值运算符,以多种便捷的方式馈送向量和矩阵(#4034)。感谢 Nasos。
    • 新的基于 Doxygen 的文档
    • 启用算术运算符(+、-、*、/)在 std::complex 和整数类型的 ublas 容器之间工作(#3649)。感谢 Neal。
    • 删除了 functional.hpp 中未使用的变量(#4377)。感谢 Marco。
    • 新的 matrix_indirect 和 vector_indirect 视图,用于使用索引矩阵或向量访问元素。
  • 实用程序:
    • 添加了一个新的模板类 boost::initialized<T>,以修复 #3472
    • 当编译器完全实现了值初始化时,新版本的 value_initialized<T> 不再调用 memset#3869)。
    • 新的模板 boost::tr1_result_of 实现了 TR1 ResultOf 协议,即使 boost::result_of 使用基于 C++0x decltype 的实现。
  • Uuid:
    • 定义 BOOST_UUID_NO_TYPE_TRAITS 以移除对 Boost.TypeTraits 的依赖。
    • operator<< 处理左、内部和右操作符。
    • 添加了 to_stringto_wstring 将 uuid 转换为字符串。
    • 修复了文档中的小错误。
  • Wave: 详情请参阅更改日志
  • Xpressive:
    • nested_results 中用 typedef 替换不可移植的 using 声明。
    • 支持针对非局部变量使用占位符的用户定义断言。

更新的工具

  • Boostbook:
    • 速度显著提高。
    • 改进了语法高亮显示。
  • Quickbook:
    • 使用 cygwin 1.7 API 以获得更好的路径处理。
    • 改进了 boostbook 生成。
    • 调整语法以清理一些边缘情况。
    • 更多详情请参阅更改日志

测试过的编译器

Boost 的主要测试编译器是

  • OS X
    • Intel Leopard 上的 GCC 4.0.1。
  • Linux
    • 64 位 Suse 上的 GCC 4.4。
  • Windows
    • Visual C++ 7.1 SP1、8.0 SP1、9.0 SP1 和 10.0。
    • 使用 Mingw 的 GCC 4.3.3。
  • FreeBSD
    • GCC 4.2.1,32 位和 64 位。

Boost 的其他测试编译器包括

  • Linux
    • 32 位 Red Hat Enterprise Linux 上的 Intel 10.1。
    • 64 位 Red Hat Enterprise Linux 上的 Intel 10.1、11.0、11.1。
    • Red Hat Enterprise Linux 上的 GCC 3.4.6、4.2.4、4.3.4、4.4.3、4.5。
    • Red Hat Enterprise Linux 上的 GCC(带 C++0x 扩展),4.3.4、4.4.3、4.5。
    • 64 位 Suse 上的 GCC 4.4。
    • Red Hat Enterprise Linux 上的 QLogic PathScale(TM) 编译器套件:版本 3.2。
    • 来自 Subversion 的 Clang(将与 LLVM 2.8 一起发布)。
  • OS X
    • Leopard 上的 Intel C++ 编译器 10.1、11.0、11.1。
    • GCC 4.0.1、4.2.1(Apple 构建)。
    • GCC 4.4
    • GCC(带 C++0x 扩展),4.4
    • 来自 Subversion 的 Clang(将与 LLVM 2.8 一起发布)。
  • Windows
    • 32 位 XP 上的 Visual C++ 7.1 SP、8.0、9.0。
    • XP 和 Windows Mobile 5.0 上使用 STLport 5.2 的 Visual C++ 9.0。
    • XP 上的 Visual C++ 10.0。
    • 64 位 Windows 7 上的 Visual C++ 10.0。
    • Borland/Codegear C++ 5.9.3、6.1.3 (2009)、6.2.1 (2010)。
    • Vista 32 位上使用 Visual C++ 9.0 后端的 Intel C++ 11.1。
    • Mingw 上的 GCC 4.3.3、4.5。
    • Mingw 上的 GCC(带 C++0x 扩展),4.5。
  • AIX
    • AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition,V11.1.0.0。
  • FreeBSD
    • FreeBSD 7.2(64 位)上的 GCC 4.2.1。
    • FreeBSD 8.0(32 位)上的 GCC 4.2.1。
  • Solaris
    • Solaris 5.10 上的 Sun C++ 5.10。

致谢

Beman Dawes、Eric Niebler、Rene Rivera、Daniel James 和 Vladimir Prus 管理了此版本。

感谢 Marshall Clow 组织了 bug sprint 以及所有参与的人。