Boost C++ 库

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

版本 1.65.0

版本 1.65.0

2017 年 8 月 21 日 20:50 格林尼治标准时间

文档

下载
平台文件SHA256 哈希值
unixboost_1_65_0.tar.bz2ea26712742e2fb079c2a566a31f3266973b76e38222b9f88b387e3c8b2f9902c
boost_1_65_0.tar.gz8a142d33ab4b4ed0de3abea3280ae3b2ce91c48c09478518c73e5dd2ba8f20aa
windowsboost_1_65_0.7z4873d8f3506fd8d76e2eadcf0ace83b258010fc268a4d974361af7abad5448f5
boost_1_65_0.zipf3f5c37be45eb6516c95cd147d8aa4abb9b52121fc3eccc1fc65c4af0cf48592
* 下载链接由C++ 联盟的资助支持。

第三方下载

已知问题

这些是库作者提供的补丁,发现得太晚,无法在发布版本中修复。请谨慎使用,因为它们没有经过正常的测试流程。

用于修复以下问题的组合补丁:boost_1_65_0.patch。 使用 `patch -p1 < boost_1_65_0.patch` (在 boost 代码库的根目录下)应用补丁。或者您可以单独应用以下补丁。

新增库

  • PolyCollection: 来自 Joaquín M López Muñoz 的快速多态对象容器。
  • Stacktrace: 来自 Antony Polukhin 的收集、存储、复制和打印回溯。
    • 注意:该库存在MinGW 问题,并可能使用该编译器生成空的回溯。

移除的库

  • TR1

更新的库

  • Asio:
    • 更改为需要g++版本 >= 4.7 以使用标准原子操作,以修复使用时出现的链接器错误g++ 4.6 (#13121).
    • 启用使用最新的 MSVC 版本的constexpr 和可变参数模板。
    • 修复了 Linux epoll 后端中的竞争条件,当另一个线程在 epoll 上阻塞时,该条件可能会在套接字或描述符关闭时发生。
    • 消除了对已弃用的auto_ptr 的使用。
    • 修复了asio_handler_is_continuation 的错误使用,导致反应式async_accept 实现出现问题。
    • 更改为在某些现代 POSIX 平台上使用poll.h 而不是sys/poll.h (#12419)。
    • 修复了 MSVC 智能感知检测。
    • 禁用了对 android/clang/x86 目标的__thread 关键字扩展的使用。
  • Context:
    • 改进
      • call/cc 支持 ucontext-API (swapcontext)
      • call/cc 支持 Windows-Fiber-API
      • call/cc 支持按需增长(分段/分割)堆栈
    • 错误修复
      • #12719:使用 mingw-w64 工具链构建时,context 测试用例和示例出现段错误
      • #52:使用 g++-4.9 无法构建 callcc 测试
    • 重要
  • 配置:
    • 添加了BOOST_NO_CXX11_POINTER_TRAITSBOOST_NO_CXX17_FOLD_EXPRESSIONSBOOST_NO_CXX17_INLINE_VARIABLESBOOST_NO_CXX17_STRUCTURED_BINDINGS 缺陷检测。
    • GCC 7 及更高版本支持 BOOST_FALLTHROUGH。(Glen Fernandes)
  • 核心:
    • 为 C++03 及更高版本实现了pointer_traits,实现了P0653r0(Glen Fernandes)。此实现现在被 Align、Circular Buffer、Fiber、Geometry 等库使用。
    • 向轻量级测试添加了BOOST_TEST_GTBOOST_TEST_GE
  • Coroutine2:
    • 支持 ucontext-API (swapcontext)
    • 支持 Windows-Fiber-API
    • #13064:coroutine 和 coroutine2 的行为不同
  • DLL:
    • 修复非 Windows 平台上的 PE 解析。
  • Fiber:
    • 改进
      • 支持硬件事务内存 (Intel TSX)
      • 支持 NUMA
      • 支持 ucontext-API (swapcontext)
      • 支持 Windows-Fiber-API
      • 按需增长堆栈
    • 错误修复
      • #121:使用 GCC 4.8 和 C++11 无法构建静态库
      • #123:schedule_from_remote 中断言失败
      • #125:测试套件中出现反复崩溃
      • #126:compare_exchange_strong 中的 std::memory_order 值不正确?
    • 重要
  • Fusion:
    • MSVC 14.1 支持可变参数容器,例如fusion::vectorfusion::dequefusion::mapfusion::setfusion::tuple。(#12986
  • Geometry:
    • 改进
      • 添加采用面积策略的 correct() 重载
      • 添加采用侧边策略的 is_convex() 重载
      • 为 MultiPoint/AnyGeometry 添加缺失的关系运算符 (covered_by、crosses、equals 等)
    • 已解决的问题
      • 12410 correct() 缺少对地理坐标系的 支持
      • 13035 近极点线段的非笛卡尔交集策略结果错误。
      • 13057 由盒子不相交()中的数值问题引起的线字符串 intersects() 结果错误。
    • 错误修复
      • 修复 is_valid,它可能对内部环相互接触的多边形返回 false
      • 修复 is_valid,它可能对多边形位于内部环中的多边形返回 false,所有多边形都相互接触
      • 修复联合操作,它可能产生无效的结果(对于某些情况,这需要定义 BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
      • 修复交集操作(同上),但某些情况仍无效
      • 修复差集操作(同上),但某些情况仍无效
      • 修复将面积策略传播到从交集策略开始的各种算法内部
      • 修复 relate 中的未初始化变量以及 overlay 中对临时变量的引用
      • 修复地理 Segment/Box 的不相交处理
      • 修复各种算法中非笛卡尔几何的处理
  • Hash:
    • 支持char16_tchar32_tu16stringu32string
  • Log:
    • 一般更改
      • 改进了与 Solaris 的兼容性。
    • 查看更改日志以了解更多详细信息。
  • Phoenix:
    • 更正了一些文档。(PR#50
    • 在 C++11 模式下,带有关联容器的phoenix::erase 返回迭代器。(#7423
    • 应该使用预定义的惰性函数处理std::setstd::multiset。(PR#52
    • 在 C++17 中禁用phoenix::random_shuffle。(PR#53
    • 不要进行前向声明,而是包含。(#11875
  • Predef:
    • 将 Intel C/C++ 版本 9999 检测修复为 12.1.0。
    • 添加了BOOST_PREDEF_WORKAROUNDBOOST_PREDEF_TESTED_AT 宏,用于缺陷规避和检测。
    • 添加 ARM64 MSVC SIMD 检测。(来自 Minmin Gong)
    • 添加 iOS 模拟器与设备作为平台选择的检测。(来自 Ruslan Baratov)
    • 修复 MinGW 不正确的头文件保护。(来自 Ruslan Baratov)
  • Program Options:
    • 支持将值存储到boost::optional 中,感谢 Ed Catmur(#7495PR#18
    • 隐式选项的解析现在可以使用下一个标记的值。从 1.59 开始,除非在与选项本身相同的标记中指定隐式选项的值,否则将使用隐式值。这被证明是不方便的,现在我们再次检查下一个标记,如果它本身不是选项,则将其用作值。(#25
  • Python:
    • eval()exec()exec_statement() 现在除了boost::python::str 之外,还允许使用char const * 参数。
    • boost::python::numeric API 已被移除,因为它已被boost::python::numpy 淘汰。
    • 修复了在使用 Python3 和 MSVC 时的一些构建问题。
  • 智能指针:
    • 新的类模板atomic_shared_ptr,它提供对shared_ptr 的线程安全原子指针操作。(Peter Dimov)
    • 新的类模板local_shared_ptr,其中引用计数使用非原子操作更新。(Peter Dimov)
    • 对数组的allocate_sharedmake_shared 进行了更多优化。(Glen Fernandes)
    • 文档已完全重写为 Asciidoc 格式。
  • 测试:
    • Boost.test v3.6,更多详情请参见变更日志部分。
    • 新功能
      • C++17 兼容性(在 VS2017 上测试),感谢Daniela Engert
      • BOOST_TEST中直接比较 C 数组
      • 改进的全局 fixture 机制,以及使用BOOST_TEST_GLOBAL_FIXTURE进行全局 fixture 和BOOST_TEST_GLOBAL_CONFIGURATION进行全局初始化(编译时配置)的职责分离。
      • 改进的 fixture 支持(setup / teardown 成员函数),这使得更好的拆卸时间检查成为可能。
    • 重大更改
      • 记录器的部分 API 更改
      • 弃用BOOST_GLOBAL_FIXTURE,转而使用BOOST_TEST_GLOBAL_FIXTUREBOOST_TEST_GLOBAL_CONFIGURATION(见上文)
    • 错误修复
  • 线程:
  • TypeIndex:
    • 如果需要,请包含 <boost/functional/hash.hpp>,感谢 Ed Catmur #13009
    • 在类似 GCC 的编译器上尽可能使用原生hash_code() #13027
    • 修复 GCC 7 及更高版本的ctti_type_index,感谢 Benjamin Buch PR16
  • Typeof:
  • Unordered:
    • unordered_setunordered_multiset,以及对unordered_mapunordered_multimap使用相同的数据结构。这是 C++17 所必需的,以便可以在兼容的容器之间合并和提取节点。
    • 为长期弃用的函数添加弃用属性。
    • 在 C++11 编译器上改进allocator_traits constructdestroy的使用,在适当情况下使用分段对构造。
    • 较少针对较新的 Oracle 编译器的变通方法。
    • 避免取消对未初始化内存的指针的引用(PR #5)。
  • 实用程序:
    • 提高了boost::next/boost::prior与不友好 SFINAE 的迭代器的兼容性。#10847#13002
  • Variant:
    • 由 Albert Sverdlov 添加了boost::get的右值重载 #13018
    • 由 Adam Badura 添加了缺少的<boost/variant/polymorphic_get.hpp>头文件 #13037
    • boost::make_variant_over已修复,现在可与视图和其他前向序列一起使用(感谢 Mikhail Maksimov 的修复)#8554#10041PR#35

已测试的编译器

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.0、3.6.0、3.7.1、3.8.0、3.8.1、3.9.1、4.0.1
    • Clang,C++1z:4.0.0
    • GCC:4.4.7、4.5.3、4.6.3、4.7.2、5.4.0、7.1.0
    • GCC,C++11:4.4.7、4.7.2、4.7.3、4.8.5、4.9.4、5.4.0、7.1.0
    • GCC,C++14:5.4.0、5.4.1、6.3.0、7.1.0
    • GCC,C++17:7.1.0
    • GCC,C++1z:6.3.0
    • Intel:16.0、17.0
    • Intel,C++11:16.0、17.0
    • Intel,C++14:16.0
  • OS X
    • Clang:8.1.0
    • Clang,C++11:8.1.0
    • Clang,C++14:8.1.0
  • Windows
    • GCC:3.4.5、4.1.2、4.2.4、4.3.3、4.4.0、4.5.4
    • GCC,C++11:4.6.4、4.7.3、4.8.1
    • GCC,C++14: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、14.1
  • Android
    • Clang:3.6、3.7、3.8
    • GCC:4.9、5.4
    • GCC,C++14:6.2
  • FreeBSD
    • Clang:3.8.0
    • Clang,C++11:3.8.0
    • Clang,C++14:3.8.0
    • Clang,C++1z:3.8.0
  • QNX
    • QCC,C++11:4.7.3
  • SunOS
    • Oracle Solaris Studio:12.5_next、12.5
    • Oracle Solaris Studio,C++11:12.5_next、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.0、3.6.0、3.7.1、3.8.0、3.8.1、3.9.1、4.0.1
    • Clang,C++1z:4.0.0
    • GCC:4.4.7、4.5.3、4.6.3、4.7.2、5.4.0、7.1.0
    • GCC,C++11:4.4.7、4.7.2、4.7.3、4.8.5、4.9.4、5.4.0、7.1.0
    • GCC,C++14:5.4.1、6.2.0、6.3.0、7.1.0、8.0.0
    • GCC,C++17:7.1.0
    • GCC,C++1z:6.3.0
    • Intel:17.0
    • Intel,C++11:16.0、17.0
    • Intel,C++14:16.0
  • OS X
    • Clang:8.1.0
    • Clang,C++11:8.1.0
    • Clang,C++14:8.1.0
    • Clang,C++1z:8.1.0
  • Windows
    • GCC:3.4.5、4.1.2、4.2.4、4.3.3、4.4.0、4.5.4
    • GCC,C++11:4.6.4、4.7.3、4.8.1
    • GCC,C++14: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、14.1
  • Android
    • Clang:3.6、3.7、3.8
    • GCC:4.9、5.4
    • GCC,C++14:6.2
  • FreeBSD
    • Clang:3.8.0
    • Clang,C++11:3.8.0
    • Clang,C++14:3.8.0
    • Clang,C++1z:3.8.0
  • SunOS
    • Oracle Solaris Studio:12.5_next、12.5
    • Oracle Solaris Studio,C++11:12.5_next、12.5

致谢

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