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

更新

添加了图和属性映射的缺失说明。

Boost.CMake

Boost.CMake 现在单独分发。上述压缩包中 boost 的 cmake 构建已损坏。有关工作版本的指针,请参阅 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后端。
    • 修复了内部哈希映射中桶数组大小调整的错误(#3095)。
    • 确保在同步接受失败时正确传播错误代码(#3216)。
    • 确保在 Windows HANDLE 上的同步读取或写入失败时正确传播错误代码。
    • 修复了定义 _GLIBCXX_DEBUG 时报告的故障(#3098)。
    • 修复了计时器的自定义内存分配支持(#3107)。
    • 整理了 g++ 报告的各种警告(#1341#2618)。
    • 各种文档改进,包括更明显的指向函数重载的超链接、头文件信息、处理程序类型要求的示例,以及向索引添加枚举值(#3157#2620)。
  • Foreach:
    • 解决了与 Python 头文件的冲突(#3000)。
  • 函数 (Function):
  • Fusion:
    • 改进了 fusion::vector 的编译时间。
  • 图 (Graph):
    • 合并了 并行 Boost 图库,为分布式内存计算机(如集群)提供了一整套图算法和数据结构。
    • 更新了压缩稀疏行图的接口,包括从未排序边列表构造。
    • 隐式网格图,比使用以前的生成器节省内存。
    • 新算法:没有单独颜色映射的 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 解析器不再删除原始标记(#2425)。
    • 修复了 variables_map 中用户插入项的崩溃问题(#2782)。
  • 属性映射 (Property Map):
    • 将属性映射代码移至单独的目录 boost/property_map/。旧文件仍然存在并转发到新文件;boost/ 中以前的旧文件将在 Boost 1.42.0 中删除。
    • 将分布式属性映射移至 boost::graph::parallel 命名空间。
    • 添加了基于 boost::shared_array 的属性映射,提供更简单的接口。
  • Proto:
    • PrimitiveTransforms 更严格地符合 ResultOf 协议。(警告:某些无效代码可能会损坏。)
    • proto::_default 的模板参数添加合理的默认值。
    • 改进了成员指针的默认评估策略。
    • GCC 3.4 可移植性修复(#3021)。
    • 解决 Visual C++ 的非 std 兼容 ciso646 宏。
  • 随机 (Random):
    • 使所有生成器的构造函数在传递非 const 引用时调用复制构造函数。
    • 更改了种子函数以接受任何算术类型。副作用是某些类的种子确切签名发生了变化。
    • 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)。
    • 默认情况下创建更少的桶。
    • 一些小的调整以获得更好的编译器支持(#2908#3096#3082)。
  • Xpressive:
    • 可在 Visual C++ 10.0 上运行(#3124)。

构建系统

类 Unix 环境中库的默认命名现在与系统约定匹配,并且不包括各种修饰。Cygwin 上的库命名也被修复。添加了对 Microsoft Visual Studio 10 测试版版本的支持。使用 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 服务器上的 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 不稳定版上的 GCC 4.3.4。
    • QLogic PathScale(TM) 编译器套件:Red Hat Enterprise Linux 上的版本 3.1。
    • 64 位 Red Hat Enterprise Linux 上的 GCC 版本 4.2.0(PathScale 3.2 驱动程序)。
    • 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 测试版。
    • Borland 5.9.3、6.1.0、6.1.3。
    • Borland C++ Builder 2007 和 2009。
    • 在 32 位 Vista 系统上使用 Intel C++ 11.1,以及 Visual C++ 9.0 后端。
    • 在 64 位 Vista 系统上使用 Intel C++ 11.1,以及 Visual C++ 9.0 后端。
    • 在 Mingw 上使用 GCC 4.3.3 和 4.4.0,并启用 C++0x 功能。
  • AIX
    • 在 AIX 版本 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 管理了此版本。