Boost C++ 库

……世界上最受推崇和设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码规范

版本 1.43.0

版本 1.43.0

2010年5月6日 12:00 格林尼治标准时间

文档

下载
平台文件
Unixboost_1_43_0.tar.bz2
boost_1_43_0.tar.gz
Windowsboost_1_43_0.7z
boost_1_43_0.zip

新库

  • Functional/factory: 用于动态和按值构造的函数对象,来自 Tobias Schwinger。
  • Functional/forward: 用于解决转发问题的函数对象适配器,来自 Tobias Schwinger。

主要更新

  • Range: Boost.Range 进行了大量更新,包括最近审查的 Boost.RangeEx 的所有功能,来自 Neil Groves。
    • 基于范围的完整 STL 基于迭代器的算法版本。
    • 可以与基于范围的算法结合使用的范围适配器,具有前所未有的表达能力和效率。
    • 新函数:irange、istream_range、join、combine。

更新的库

  • 累加器 (Accumulators):
    • 避免在运算符重载返回类型中过早地进行模板求值。
  • 数组 (Array):
    • 添加了对 SunCC 编译器的支持。
    • 添加了“fill”成员函数。
    • 将异常代码更改为使用 boost::throw_exception。
  • Asio:
    • 改进性能。
    • 减少编译时间。
    • 减小生成的代码大小。
    • 扩展了保证后台线程不调用用户代码的范围,使其涵盖所有异步操作 (#3923)。
    • 更改为在 Linux 上使用边沿触发的 epoll。
    • 更改为在 Linux 上使用timerfd分派计时器(如果可用)。
    • 更改为在 Mac OS X 和 BSD 平台上使用单次通知的 kqueue。
    • 根据 TR2 建议,添加了位掩码类型ip::resolver_query_base::flags。此类型可防止从intflags的隐式转换,从而允许编译器捕获用户错误地将数字端口号作为服务名称传递的情况。
    • 为所有 Windows 编译器添加了#define NOMINMAX。用户可以定义BOOST_ASIO_NO_NOMINMAX来抑制此定义 (#3901)。
    • 修复了一个错误,该错误导致 0 字节异步读取错误地将error::eof结果传递给完成处理程序 (#4023)。
    • 更改io_control()成员函数,使其在修改阻塞模式时始终调用底层描述符上的ioctl (#3307)。
    • 更改解析器实现,不再需要类型定义InternetProtocol::resolver_queryInternetProtocol::resolver_iterator,因为这两个类型定义都不是已记录的InternetProtocol需求的一部分。ip::tcpip::udpip::icmp类中的相应类型定义已被弃用。
    • 修复了非基于select()的反应器的带外处理。
    • 添加了新的BOOST_ASIO_DISABLE_THREADS宏,允许独立禁用 Asio 的线程支持。
    • 次要文档改进。
  • Fusion:
    • 添加了用于适配或定义自定义类型的新宏。有关详细信息,请参阅更改日志
  • Iostreams:
  • 多索引容器 (Multi-index Containers):
  • Proto:
    • 行为上的细微变化:非常量表达式自我赋值会创建一个赋值节点。有关详细信息,请参阅 Proto 的发行说明
    • 对推荐的表达式扩展机制的细微更改:使用BOOST_PROTO_EXTENDS_USING_ASSIGN()。有关详细信息,请参阅 Proto 的发行说明
    • 修复了在 Proto 转换中调用可调用单态函数对象时的错误。
    • 修复了各种常量正确性问题,解决了 Fusion 错误。
    • 向 Proto 终端添加非常量函数调用重载。
    • proto::literal<>添加默认构造函数。
    • 不要使用已弃用的配置宏。
    • 添加proto::assert_matches()函数及其相关函数到<boost/proto/debug.hpp>.
    • functional::make_expr<>functional::unpack_expr<>返回常量限定的右值。
    • 添加 Expr 和 Domain 概念的文档。
  • Random:
    • 将 random_device 的实现放在编译后的库中,并添加了 Windows 支持。
    • 使用 Quickbook/Doxygen/Boostbook 重写了文档并使其保持最新。
  • Spirit: Spirit V2.3,有关详细信息,请参阅“新增功能”部分。
  • Thread:
    • 对除thread_interrupted之外的所有异常使用boost::throw_exception
    • 添加了对问题 2742 的修复
    • 对互斥锁和call_once进行了优化
  • Unordered:
    • erase_return_void现在是quick_erase (#3966)。
  • Uuid:
    • 将生成器拆分为单独的文件。
    • 修复了 basic_random_generator 中的错误 (#3971)。
    • 更新了文档。
  • Wave: 有关详细信息,请参阅更改日志
  • Xpressive:
    • 添加缺少的包含到<boost/xpressive/regex_error.hpp>.

构建系统

  • 交叉编译到 GNU 目标时,会正确创建静态库。以前,使用此类库会导致存档没有索引错误。
  • 使用 Windows 上的 gcc 编译器(mingw 和 cygwin)命名的 DLL 和导入库现在与这些环境的默认约定相匹配。以前,命名方案与其他 Windows 编译器相同。

更新的工具

  • Quickbook:
    • Unicode 转义字符。
    • 支持 UTF-8 字节顺序标记。
    • 在简单标记中禁止使用[。修复了一些标点符号不匹配的错误。
    • 添加命令行标志 (-D) 以在命令行中定义宏。
    • 改进了后处理器输出。
    • 检查模板中[section][endsect]标记是否平衡。

测试的编译器

Boost 的主要测试编译器是

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

Boost 的其他测试编译器包括

  • Linux
    • 32 位 Red Hat Enterprise Linux 上的 Intel 10.1、11.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。
    • Red Hat Enterprise Linux 上具有 C++0x 扩展的 GCC 4.3.4、4.4.3。
    • QLogic PathScale(TM) 编译器套件:Red Hat Enterprise Linux 上的版本 3.2。
  • OS X
    • Leopard 上的 Intel C++ 编译器 10.1、11.0、11.1。
    • Intel Leopard 上的 GCC 4.0.1。
    • 来自 Subversion 的 Clang。
  • Windows
    • 32 位 XP 上的 Visual C++ 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。
    • Mingw 上的 GCC 4.4.3,带和不带 C++0x 扩展。
    • Mingw 上的 GCC 4.5。
  • AIX
    • AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition,V10.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 负责此版本的管理。