Boost C++ 库

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

版本 1.42.0

版本 1.42.0

2010 年 2 月 2 日 14:00 GMT

文档

下载
平台文件
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 服务器 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)。
  • 循环缓冲区:
    • 为不需要显式销毁的存储元素类型(例如 int 或 double)添加了具有恒定复杂度的 erase_begin(size_type) 和 erase_end(size_type) 方法。
    • 类似地,更改了 clear() 方法和析构函数的实现,因此对于不需要显式销毁的存储元素类型,它们的复杂度现在是恒定的(其他类型的复杂度仍然是线性的)。
  • Fusion:
    • 累加器是 fusion::foldfusion::accumulate 函子的第一个参数 (#2355)。
    • 添加了对关联迭代器和视图的支持 (#3473)。
  • Graph:
    • 删除了 compressed_sparse_row_graph 的旧接口,使新接口成为默认接口。
  • Integer:
    • 将 Trunk 恢复到发布分支状态(即“已知良好状态”)。
    • 修复了问题:653, 3084, 3177, 3180, 3568, 3657, 2134
    • 为以下项添加了 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'd。以前,它们被硬编码为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 和 friends 的 const 正确性问题 (#3364)。
    • 适应了 fusion::fold 的最新更改,删除了对 Doxygen 和 pre-1.35 Fusion 的旧支持 (#3553)。
    • 在二进制运算中,当一个操作数具有用户指定的域,而另一个操作数具有默认域时,用户指定的域优先。
    • 修复了 BOOST_PROTO_EXTENDS 以使其与详细类型一起使用。
    • 解决了 EDG 编译器在函数类型和 cv 限定方面存在的 bug。
  • Regex:
    • 添加了对 Functors 而不是字符串作为格式表达式的支持。
    • 改进了抛出异常时的错误报告,以包含更好、更相关的信息。
    • 提高了递归表达式的性能并减少了堆栈使用量。
    • 修复了 tickets #2802, #3425, #3507, #3546, #3631, #3632, #3715, #3718, #3763, #3764
  • Spirit: Spirit V2.2,有关详细信息,请参阅“新增功能”部分。
  • Unordered:
    • 支持使用不完整的 value 类型实例化容器。
    • 添加了 erase_return_void 作为当前 erase 的临时解决方法,因为 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。
    • Suse Linux 64 位上的 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。
    • Red Hat Enterprise Linux 上的 QLogic PathScale(TM) Compiler Suite: Version 3.2。
  • OS X
    • Leopard 上的 Intel C++ Compiler 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。
    • 带有和不带有 C++0x 扩展的 Mingw 上的 GCC 4.4.1。
  • AIX
    • AIX Version 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 管理了此版本。