Boost C++ 库

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

版本 1.63.0

版本 1.63.0

2016年12月26日 23:43 GMT

文档

下载
平台文件SHA256 哈希值
unixboost_1_63_0.tar.bz2beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0
boost_1_63_0.tar.gzfe34a4e119798e10b8cc9e565b3b0284e9fd3977ec8a1b19586ad1dec397088b
windowsboost_1_63_0.7z25db3956a8d58187ac7a0702cc917e9bab47ff90baafc35e4e789dca1ce5f423
boost_1_63_0.zip97ce6635df1f44653a597343cd5757bb8b6b992beb3720f5fc761e3644bcbe7b
* 下载链接由 The C++ Alliance 的资助支持。

第三方下载

发布后补丁

  • Atomic:
    • 在 32 位 x86 架构上使用 64 位原子操作,且 gcc 版本低于 4.7 及兼容编译器时,可能会导致生成错误的代码。此问题已在 commit 中修复。

更新的库

  • Atomic:
    • 添加了静态常量 atomic<T>::is_always_lock_free 以符合 C++17 标准。此常量指示给定的特化始终提供原子操作的无锁实现。
    • 改进了对 x86 目标平台上 Oracle Studio 的支持。
  • Context:
    • #11687 Xcode (Apple clang) 和 thread_local
    • #12114 context 在 ios arm64 设备上不保留 fpu 上下文(也为其他架构修复)
    • #12411 在 Visual Studio 中使用 O2 优化时,fpu 寄存器未保留(也为其他架构修复)
    • #12551 在 arm64 上构建 boost 导致错误:unknown directive
    • 减少了 ontop-functions 的签名
    • private fcontext-API 的单元测试
    • ucontext 和 fcontext 的性能测试已修复
  • Fiber:
    • unbounded_channel 和 bounded_channel 标记为已弃用
    • 新类 buffered_channel 和 unbuffered_channel
    • 性能提升
  • Fusion:
    • 修复了 fusion::vector 构造函数中的 Bug(感谢 Lee Clagett)。
    • BOOST_FUSION_ADAPT*BOOST_FUSION_DEFINE* 现在允许空结构。 (#6592)
    • BOOST_FUSION_DEFINE* 允许移动构造函数和赋值。 (#10099)
    • std::array 的适配器(感谢 Mateusz Łoskot)。 (#8241)
    • 修复了 MSVC 上返回临时变量的警告。
  • Geometry:
    • 改进
      • Intersection: 注意输出有效(正在进行中,尚未完成 - 但更多内容有效)
    • 已解决的 Ticket
      • #12289 避免 std::cout 的警告/编译错误
      • #12412 geographic Points 和 Boxes 的 covered_by() 结果无效
      • #12413 rtree::remove() 对 geographic Points 工作不正常
  • Hash:
    • 修复了一些警告。
  • Lexical Cast:
    • 修复了 -fsanitize=undefined 发现的问题 #21
  • Log:
    • 常规变更
      • 移除了之前已弃用的 type_info_wrapper
    • 新功能
      • 添加了一种从文本文件接收器后端访问当前文件名的方法。可以使用 get_current_file_name 方法获取文件名。
    • Bug 修复
      • 修复了 Android API 版本低于 21 的编译错误。
      • 流运算符现在按值接收标量类型和枚举。这允许将静态常量和位域直接输出到格式化流和记录流中。 (#11998)
      • 修复了本机 syslog API 的自动检测。 (#12600)
      • 在基于 UDP 套接字的 syslog 后端实现中,更改了 syslog 消息格式,以更好地符合 RFC3164。
      • 如果文本文件接收器后端中安装的文件关闭处理程序在文件尚未打开时调用,则不再调用。
    • 有关更多详细信息,请参阅 changelog
  • Metaparse:
    • 改进了 BOOST_METAPARSE_STRING 的实现
      • 最大字符串长度限制已增加到 2048
      • 最大字符串长度限制可以通过使用脚本(库的一部分)重新生成某些 Boost 标头来扩展到 2048 以上
      • 可以在编译单元内更改字符串长度限制
  • Move:
    • 改进了实验性的自适应排序算法性能
    • 激活 BOOST_MOVE_FORCEINLINE
  • Optional:
    • 添加了两个新的就地构造函数。它们的工作方式类似于 emplace() 函数:它们通过完美转发获得的参数来初始化包含的值。一个构造函数始终初始化包含的值,另一个构造函数基于布尔条件。
    • 语法 o = {} 现在可以正确地取消初始化 optional,就像在 std::optional 中一样。
    • 修复了 optional<optional<T>&> 初始化。 (#12203)
    • Optional 构造函数是 sfinae 友好的。这修复了与 std::tuple 的交互。 (#12563)
  • Phoenix:
    • 大多数模块现在支持 C++11 可变参数模板。
    • 修复了结果类型的类型推导失败。
    • 抑制未使用的警告。
    • 修复了二元数学函数上的参数过少错误。
    • 为旧编译器添加了解决方法。
  • Python:
    • 添加了对 C++11 的(基本)支持 (std::shared_ptr, std::unique_ptr)
    • 合并了用于包装 NumPy 的扩展 API
    • 移除了过时的位和片段
  • Test:
    • Boost.Test v3.4 请参阅 变更日志 部分了解更多详情。
    • 新功能:per_elementlexicographic 修饰符 BOOST_TEST 也可以应用于字符串比较
    • 重大变更:测试用例名称中出现的冒号将替换为下划线
    • Bug 修复
  • TypeIndex:
    • runtime_cast 添加到库中,作为 dynamic_cast 的模拟。感谢 Chris Glover 的实现。有关更多信息,请参阅 runtime_cast 参考
    • CTTI 的内部结构更加平台独立,原因是将 std::size_t 类型更改为 unsigned int
  • Units:
    • 修复检查警告
    • 将物理化学常数更新为 CODATA 2014 值
    • 将 biot 正确定义为 10 安培
  • Unordered:
    • 修复了赋值中的异常安全性问题。
    • 在可用时使用 std::allocator_traits,并支持现代风格的 rebind (#12459)。
    • 添加了一些 allocator aware 构造函数。
    • emplace_hint 中使用 hint 迭代器。
    • 修复了一些警告。
    • 有关更多详细信息,请参阅 changelog

测试编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.0, 3.8.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
    • Clang, C++1z: 3.8.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • Windows
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.2
  • QNX
    • QCC: 4.4.2
  • SunOS
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.8.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1
    • Clang, C++14: 3.5, 3.6, 3.7, 3.8.1
    • Clang, C++1z: 3.8.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1, 6.2.0
    • GCC, C++14: 5.2.0, 5.3.0, 6.1.1, 6.2.0, 7.0.0 (实验性)
    • GCC, C++1z: 6.1.1
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • Windows
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 4.9.3, 5.1.0, 5.2.0, 5.3.0, 6.1.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.2
    • GCC,C++14: 6.1.0
  • QNX
    • QCC: 4.4.2
  • SunOS
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

致谢

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