Boost C++ 库

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

版本 1.40.0

版本 1.40.0

2009 年 8 月 27 日 17:00 GMT

文档

下载
平台文件
unixboost_1_40_0.tar.bz2
boost_1_40_0.tar.gz
windowsboost_1_40_0.7z
boost_1_40_0.zip

更新

为 Graph 和 Property Map 添加了缺失的注释。

Boost.CMake

Boost.CMake 现在是单独分发的。boost 的 cmake 构建在上面的 tarball 中是损坏的。请参阅 Boost.CMake wiki 页面 以获取指向工作版本的指针。

更新的库

  • Accumulators:
    • 在 GCC 4.4 上工作。
  • Asio:
    • 添加了一个新的 ping 示例来说明 ICMP 套接字的使用。
    • 更改了 buffered*_stream<> 模板,将 0 字节的读取和写入视为无操作,以符合 SyncReadStreamAsyncReadStreamSyncWriteStreamAsyncWriteStream 的文档化类型要求。
    • throw 关键字的一些实例更改为 boost::throw_exception(),以便在禁用异常支持时可以使用 Asio。请注意,SSL 包装器仍然需要异常支持 (#2754)。
    • 使 Asio 与 OpenSSL 1.0 beta 兼容 (#3256)。
    • 消除了 Solaris 中的冗余系统调用/dev/poll后端。
    • 修复了内部哈希映射中 bucket 数组大小调整的错误 (#3095)。
    • 确保在同步 accept 失败时正确传播错误代码 (#3216)。
    • 确保在 Windows HANDLE 上的同步读取或写入失败时正确传播错误代码。
    • 修复了定义 _GLIBCXX_DEBUG 时报告的失败 (#3098)。
    • 修复了计时器的自定义内存分配支持 (#3107)。
    • 整理了 g++ 报告的各种警告 (#1341, #2618)。
    • 各种文档改进,包括更明显的函数重载超链接、头文件信息、处理程序类型要求的示例,以及将枚举值添加到索引 (#3157, #2620)。
  • Circular Buffer:
  • Foreach:
    • 解决与 Python 头文件的冲突 (#3000)。
  • Function:
  • Fusion:
    • 改进了 fusion::vector 的编译时间。
  • Graph:
    • 合并了 Parallel Boost Graph Library,为分布式内存计算机(如集群)提供了全套图算法和数据结构。
    • 更新了压缩稀疏行图的接口,包括来自未排序边列表的构造函数。
    • 一个隐式网格图,与以前的生成器相比,节省了内存。
    • 新算法:Dijkstra 的单源最短路径算法(没有单独的颜色映射)和查找两个图之间最大公共子图的算法。
    • 各种错误修复。
  • Hash:
    • 使用模板元编程自动配置浮点函数,而不是尝试手动配置每种可能性。
  • Interprocess:
    • Windows 共享内存是在“共享文档”文件夹中创建的,以便可以在服务和进程之间共享
    • 修复了错误 #2967, #2973, #2992, #3138, #3166, #3205
  • Intrusive:
    • tree_algorithms.hpp 和 avl_tree_algorithms.hpp 中的代码清理
    • 修复了错误 #3164
  • MPL:
    • 添加了 mpl::char_mpl::string 用于编译时字符串操作,基于多字符文字 (#2905)。
    • 更新了 MPL 参考手册
    • 错误修复。
  • Program.Options:
    • 支持在禁用异常的情况下构建 (#2096)。
    • Unicode 解析器不再丢弃原始 token (#2425)。
    • 修复了在 variables_map 中用户插入的项目上崩溃的问题 (#2782)。
  • Property Map:
    • 将 property map 代码移动到单独的目录 boost/property_map/ 中。旧文件仍然存在并转发到新文件;以前直接位于 boost/ 中的文件将在 Boost 1.42.0 中删除。
    • 将分布式 property map 移动到 boost::graph::parallel 命名空间。
    • 添加了基于 boost::shared_array 的 property map,提供了更简单的接口。
  • Proto:
    • PrimitiveTransforms 具有更严格的 ResultOf 协议一致性。(警告:某些无效代码可能会中断。)
    • proto::_default 的模板参数添加了合理的默认值。
    • 改进了成员指针的默认评估策略。
    • GCC 3.4 可移植性修复 (#3021)。
    • 解决 Visual C++ 的不符合标准的 ciso646 宏。
  • Random:
    • 使所有生成器的构造函数在传递非 const 引用时调用复制构造函数。
    • 更改了 seeding 函数以接受任何算术类型。作为副作用,某些类的 seed 的确切签名发生了变化。
    • uniform_int 中的主要错误修复。
  • Serialization:
    • 移除了已弃用的头文件:boost/static_warning.hppboost/state_saver.hppboost/smart_cast.hppboost/pfto.hpp。请改用 boost/serialization/ 目录中的等效头文件 (#3062)。
    • 现在应该使用 detail::archive_serializer_map 而不是 detail::archive_pointer_iserializer。有关更多详细信息,请参阅 库发行说明
  • Unordered:
    • 为所有编译器实现 emplace,而不仅仅是具有右值引用和可变参数模板的编译器 (#1978)。
    • 默认情况下创建更少的 bucket。
    • 一些小的调整以获得更好的编译器支持 (#2908, #3096, #3082)。
  • Xpressive:
    • 在 Visual C++ 10.0 上工作 (#3124)。

构建系统

类 Unix 环境中库的默认命名现在符合系统约定,并且不包含各种修饰。Cygwin 上库的命名也得到了修复。添加了对 Microsoft Visual Studio 10 beta 版本的支持。对于 gcc,64 位编译不再需要指定目标架构。

更新的工具

  • Boostbook:
    • 在 doxygen 文档中隐藏 INTERNAL ONLY 枚举 (#3242)。
    • 调整了类概要中成员类/结构体/联合体的外观。
  • Quickbook:
    • 支持 python 代码片段 (#3029)。
    • 添加 teletype 源代码模式 (#1202)

测试的编译器

Boost 的主要测试编译器是

  • OS X
    • Intel Tiger 和 Leopard 上的 GCC 4.0.1
    • PowerPC Tiger 上的 GCC 4.0.1
  • Linux
    • Ubuntu Linux 上的 GCC 4.3.3。
  • Windows
    • Windows XP 上的 Visual C++ 7.1 SP1、8.0 SP1 和 9.0 SP1。

Boost 的其他测试编译器包括

  • Linux
    • Red Hat Enterprise Linux 上的 Intel 9.0。
    • Red Hat Enterprise Linux 上的 Intel 10.0。
    • 64 位 Linux Redhat 5.1 Server 上的 Intel 10.1。
    • 64 位 Itanium 上的 Suse Linux 上的 Intel 10.1。
    • Red Hat Enterprise Linux 上的 Intel 11.0。
    • Red Hat Enterprise Linux 上的 Intel 11.1。
    • Red Hat Enterprise Linux 上的 GCC 3.4.3、GCC 4.0.1、GCC 4.2.4、GCC 4.3.3 和 GCC 4.4.0。
    • Red Hat Enterprise Linux 上具有 C++0x 扩展的 GCC 4.3.3 和 GCC 4.4.0。
    • 64 位 Red Hat Enterprise Linux 上的 GCC 4.1.1、4.2.1。
    • 64 位 Itanium 上的 Suse Linux 上的 GCC 4.1.2。
    • 64 位 Redhat Server 5.1 上的 GCC 4.1.2。
    • Red Hat Enterprise Linux 上的 GCC Open64 4.2.2。
    • Debian unstable 上的 GCC 4.3.4。
    • Red Hat Enterprise Linux 上的 QLogic PathScale(TM) Compiler Suite: Version 3.1。
    • 64 位 Red Hat Enterprise Linux 上的 GCC version 4.2.0 (PathScale 3.2 driver)。
    • Red Hat Enterprise Linux 上的 Sun 5.9。
  • OS X
    • Intel Leopard 上的 Intel 10.1、11.0。
    • Intel Tiger 上的 Intel 10.1、11.0。
    • Intel Leopard 上的 GCC 4.0.1、4.2.1。
    • Intel Tiger 上的 GCC 4.0.1。
    • PowerPC Tiger 上的 GCC 4.0.1。
  • Windows
    • XP 上的 Visual C++ 7.1。
    • XP 上的 Visual C++ 9.0。
    • Vista 上的 Visual C++ 9.0。
    • 64 位 Vista 上的 Visual C++ 9.0。
    • XP 和 Windows Mobile 5.0 上使用 STLport 5.2 的 Visual C++ 9.0。
    • Visual C++ 10.0 beta。
    • Borland 5.9.3、6.1.0、6.1.3。
    • Borland C++ Builder 2007 和 2009。
    • Vista 32 位上带有 Visual C++ 9.0 后端的 Intel C++ 11.1。
    • Vista 64 位上带有 Visual C++ 9.0 后端的 Intel C++ 11.1。
    • Mingw 上具有 C++0x 功能的 GCC 4.3.3 和 4.4.0。
  • AIX
    • AIX Version 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition for AIX, V10.1.0.0。
  • Solaris
    • Solaris 5.10 上的 Sun C++ 5.7、5.8、5.9。
    • Solaris 5.10 上的 GCC 3.4.6。

致谢

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