Boost C++ 库

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

版本 1.42.0

版本 1.42.0

2010年2月2日 14:00 格林尼治标准时间

文档

下载
平台文件
unixboost_1_42_0.tar.bz2
boost_1_42_0.tar.gz
windowsboost_1_42_0.7z
boost_1_42_0.zip

新库

  • Uuid: 通用唯一标识符,来自 Andy Tompkins。

更新的库

  • Asio:
    • 添加了一个新的 HTTP Server 4 示例,演示了与 Asio 一起使用无栈协程。
    • 更改了处理程序的分配和调用,使用boost::addressof 获取处理程序对象的地址,而不是直接应用operator& (#2977)。
    • 将 MSVC 缓冲区调试解决方法限制为 2008 版,因为它会导致 2010 beta 2 版崩溃 (#3796#3822)。
    • 修复了处理程序内存生命周期问题,其中 Windows 需要OVERLAPPED 结构在启动函数调用返回和完成数据包交付之前保持有效。
    • 在执行系统调用时不要阻塞信号,而是如果调用被中断则重新启动调用。
    • 记录了关于处理程序调用顺序的 strand 对象的保证。
    • 更改了 strands 以使用实现池,以降低 strands 的复制成本。
    • 确保为 BSD 平台启用了 kqueue 支持 (#3626)。
    • extern "C" 线程入口点函数添加了boost_ 前缀 (#3809)。
    • getaddrinfo 模拟中,仅当指定了服务名时才检查套接字类型 (SOCK_STREAMSOCK_DGRAM)。这应该允许模拟与原始套接字一起工作。
    • 添加了一个针对某些损坏的 Windows 防火墙的解决方法,这些防火墙使套接字看起来绑定到 0.0.0.0,而实际上它绑定到 127.0.0.1。
    • 应用了针对 Solaris 上报告的 CPU 使用率过高的修复程序 (#3670)。
    • 添加了对使用较旧编译器(例如 g++ 2.95)的平台的一些支持 (#3743)。
  • 循环缓冲区:
    • 添加了方法 erase_begin(size_type) 和 erase_end(size_type),对于不需要显式销毁的存储元素类型(例如 int 或 double),其复杂度为常数。
    • 类似地更改了 clear() 方法和析构函数的实现,因此对于不需要显式销毁的存储元素类型,它们的复杂度现在为常数(其他类型的复杂度仍然为线性)。
  • Fusion:
    • 累加器是fusion::foldfusion::accumulate 函数对象的第一个参数 (#2355)。
    • 添加了对关联迭代器和视图的支持 (#3473)。
  • Graph:
    • 删除了对compressed_sparse_row_graph 的旧接口,使新接口成为默认接口。
  • Integer:
    • 将 Trunk 回滚到发布分支状态(即“已知良好状态”)。
    • 修复的问题:653308431773180356836572134
    • 为以下函数添加了 long long 支持:boost::static_log2, boost::static_signed_min, boost::static_signed_max, boost::static_unsigned_minboost::static_unsigned_max(如果可用)。
    • 以下函数的参数类型和结果类型:boost::static_signed_min等等,现在已使用 typedef 定义。以前,它们被硬编码为unsigned longint分别。请在新代码中使用提供的 typedef(并尽快更新旧代码)。
  • Iostreams:
  • Program.Options:
    • 将选项名称信息添加到一些异常类,并对异常类进行了各种清理工作 (#3423)。
    • 修复了存在默认参数时的描述文字换行问题 (#2613)。
    • 现在允许配置文件中的空值 (#1537)。
    • 不再从字符串值中去除引号 (#850)。
    • 修复了长默认参数情况下出现的无限循环问题 (#689)。
    • 修复了由使用 boost::any 引起的编译警告 (#2562)。
    • 修复了 example/response_file.cpp 中的内存错误 (#3525)。
    • 修复了大多数编译警告 (#3608)。
    • 使描述文本的列宽可配置。( #3703)。
    • 添加通用分割函数:split_unix() (#2561)。
    • 启用从给定文件名打开配置文件 (#3264)。
    • 为必需选项添加附加标志 (#2982)。
    • 启用命令行的区分大小写样式 (#3498)。
  • PropertyMap:
    • 删除了旧的头文件(直接在boost/ 目录中);自 1.40 版以来已弃用,已替换为boost/property_map/ 中的头文件。
  • Proto:
    • 修复了proto::flatten 及其相关函数的常量正确性问题 (#3364)。
    • 适应对fusion::fold 的最新更改,删除对 Doxygen 和 1.35 之前的 Fusion 的旧支持 (#3553)。
    • 在二元运算中,当一个操作数具有用户指定的域而另一个操作数具有默认域时,用户指定的域优先。
    • 修复BOOST_PROTO_EXTENDS 以使其与详细类型一起工作。
    • 解决 EDG 编译器在函数类型和 cv 限定符方面的错误。
  • Regex:
    • 添加了对函数对象而不是字符串作为格式表达式的支持。
    • 改进了抛出异常时的错误报告,以包含更相关的信息。
    • 改进了递归表达式的性能并减少了堆栈使用量。
    • 修复了工单 #2802#3425#3507#3546#3631#3632#3715#3718#3763#3764
  • Spirit: Spirit V2.2,有关详细信息,请参见“新增功能”部分。
  • Unordered:
    • 支持使用不完整的 value type 实例化容器。
    • 添加erase_return_void 作为当前erase 的临时解决方法,因为它必须查找下一个元素才能返回迭代器,因此效率低下 (#3693)。
    • 为兼容的键添加模板化 find 重载。
    • 改进了 Codegear 兼容性。
    • 其他细微更改,详细信息请参见 更改日志
  • Xpressive:
    • match_results 不再依赖于std::list 中的未定义行为 (#3278)。
    • 不要复制单一迭代器 (#3538)。
    • 消除 gcc 和 darwin 警告 (#3734)。

测试的编译器

Boost 的主要测试编译器是:

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

Boost 的其他测试编译器包括:

  • Linux
    • Red Hat Enterprise Linux 上的 Intel 10.1。
    • 64 位 Red Hat Enterprise Linux 上的 Intel 10.1。
    • 32 位 Red Hat Enterprise Linux 上的 Intel 11.0。
    • 64 位 Red Hat Enterprise Linux 上的 Intel 11.0。
    • 64 位 Red Hat Enterprise Linux 上的 Intel 11.1。
    • 64 位 Linux Redhat 5.1 Server 上的 Intel 11.1。
    • 64 位 Suse Linux 上的 Intel 11.1。
    • Red Hat Enterprise Linux 上的 GCC 3.4.6、GCC 4.2.4、GCC 4.3.4 和 GCC 4.4.2。
    • Red Hat Enterprise Linux 上带有 C++0x 扩展的 GCC 4.3.4 和 GCC 4.4.2。
    • 64 位 Linux 上的 GCC 4.4.1。
    • Debian unstable 上的 GCC 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。
    • PowerPC Tiger 上的 GCC 4.0.1。
  • Windows
    • XP 上的 Visual C++ 7.1、8.0、9.0。
    • XP 和 Windows Mobile 5.0 上使用 STLport 5.2 的 Visual C++ 9.0。
    • Visual C++ 10.0 beta 2。
    • 32 位 Vista 上的 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.4.1,带和不带 C++0x 扩展。
  • AIX
    • AIX 版本 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition for AIX,V10.1.0.0。
  • FreeBSD
    • FreeBSD 7.0 上的 GCC 4.2.1,32 位和 64 位。
  • Solaris
    • Solaris 5.10 上的 Sun C++ 5.10。

致谢

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