Boost C++ 库

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

版本 1.43.0

版本 1.43.0

2010年5月6日 12:00 GMT

文档

下载
平台文件
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)。
    • 修复了一个 bug,其中 0 字节异步读取错误地将 error::eof 结果传递给完成处理程序 (#4023)。
    • 更改了 io_control() 成员函数,使其在修改阻塞模式时始终在底层描述符上调用 ioctl (#3307)。
    • 更改了解析器实现,不再需要 typedef InternetProtocol::resolver_queryInternetProtocol::resolver_iterator,因为这些 typedef 都不属于文档化的 InternetProtocol 要求。ip::tcpip::udpip::icmp 类中对应的 typedef 已被弃用。
    • 修复了非基于 select() 的 reactor 的带外处理。
    • 添加了新的 BOOST_ASIO_DISABLE_THREADS 宏,该宏允许独立禁用 Asio 的线程支持。
    • 小的文档改进。
  • Fusion:
    • 添加了用于适配或定义自定义类型的新宏。有关详细信息,请参阅 Changelog
  • Iostreams:
  • Multi-index Containers:
  • Proto:
    • 行为上的小变化:非 const 表达式自赋值会创建一个赋值节点。有关详细信息,请参阅 Proto 的 发行说明
    • 对推荐的表达式扩展机制的微小更改:使用 BOOST_PROTO_EXTENDS_USING_ASSIGN()。有关详细信息,请参阅 Proto 的 发行说明
    • 修复了在 Proto 转换中调用可调用单态函数对象时发生的错误。
    • 修复了其他 const 正确性问题,并规避了 fusion bug。
    • 向 proto 终端添加了非 const 函数调用重载。
    • proto::literal<> 添加了默认构造函数。
    • 不要使用已弃用的配置宏。
    • 添加了 proto::assert_matches() 函数及其友元到<boost/proto/debug.hpp>.
    • functional::make_expr<>functional::unpack_expr<> 返回 const 限定的右值。
    • 为 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 中的 bug (#3971)。
    • 更新了文档。
  • Wave: 有关详细信息,请参阅 Changelog
  • 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。
    • GCC 4.3.3,使用 Mingw
  • 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。
    • Red Hat Enterprise Linux 上的 QLogic PathScale(TM) 编译器套件:版本 3.2。
  • OS X
    • Leopard 上的 Intel C++ Compiler 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 上,带有和不带有 C++0x 扩展的 GCC 4.4.3。
    • Mingw 上的 GCC 4.5。
  • AIX
    • AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition,V10.1.0.0。
  • FreeBSD
    • 64 位 FreeBSD 7.2 上的 GCC 4.2.1。
    • 32 位 FreeBSD 8.0 上的 GCC 4.2.1。
  • Solaris
    • Solaris 5.10 上的 Sun C++ 5.10。

致谢

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