Boost C++ Libraries

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

版本 1.65.0

版本 1.65.0

2017 年 8 月 21 日 20:50 GMT

文档

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

第三方下载

已知问题

这些是库作者提供的补丁,发现得太晚而无法在发布版本中修复。请小心,因为它们尚未经过正常的测试流程。

修复以下问题的组合补丁:boost_1_65_0.patch。从 boost 仓库的根目录使用 patch -p1 < boost_1_65_0.patch 来应用。或者您可以单独应用下面的补丁。

新库

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

已移除的库

  • TR1

更新的库

  • Asio:
    • 更改为需要g++版本 >= 4.7 才能使用标准原子操作,以修复在使用时出现的链接器错误g++ 4.6 (#13121).
    • 在最新的 MSVC 版本中启用了 constexpr 和可变参数模板的使用。
    • 修复了 Linux epoll 后端中的竞争条件,当套接字或描述符在另一个线程阻塞在 epoll 上时关闭时,可能会发生这种情况。
    • 消除了已弃用的 auto_ptr 的使用。
    • 修复了在反应式 async_accept 实现中错误使用 asio_handler_is_continuation 结果的问题。
    • 更改为在某些现代 POSIX 平台上使用 poll.h 而不是 sys/poll.h (#12419)。
    • 修复了 MSVC intellisense 检测。
    • 禁用了 android/clang/x86 目标的 __thread 关键字扩展的使用。
  • Context:
    • 改进
      • call/cc 支持 ucontext-API (swapcontext)
      • call/cc 支持 Windows-Fiber-API
      • call/cc 支持按需增长(分段/拆分)堆栈
    • Bugfixes
      • #12719: 使用 mingw-w64 工具链构建时,context 测试用例和示例出现段错误
      • #52: 使用 g++-4.9 构建 callcc 测试失败
    • 重要
  • Config:
    • 添加了 BOOST_NO_CXX11_POINTER_TRAITS, BOOST_NO_CXX17_FOLD_EXPRESSIONS, BOOST_NO_CXX17_INLINE_VARIABLES, BOOST_NO_CXX17_STRUCTURED_BINDINGS 缺陷检测。
    • 对 GCC 7 及更高版本的 BOOST_FALLTHROUGH 支持。(Glen Fernandes)
  • Core:
    • 为 C++03 及更高版本实现了 pointer_traits,它实现了 P0653r0 (Glen Fernandes)。此实现现在被 Align、Circular Buffer、Fiber、Geometry 等库使用。
    • 为 Lightweight Test 添加了 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
      • 按需增长堆栈
    • Bugfixes
      • #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 由于框的 disjoint() 中的数值问题,导致 linestring 的 intersects() 结果错误。
    • Bugfixes
      • 修复了 is_valid,它可能会为内部环接触另一个内部环的多边形返回 false
      • 修复了 is_valid,它可能会为多边形位于内部环中,并且所有多边形相互接触的情况返回 false
      • 修复了 union,它可能会产生无效结果(对于某些情况,这需要定义 BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
      • 修复了 intersection (idem),但某些情况仍然无效
      • 修复了 difference (idem),但某些情况仍然无效
      • 修复了面积策略从交集策略传播到各种算法内部的问题
      • 修复了 relate 中的未初始化变量以及 overlay 中对临时变量的引用
      • 修复了地理 Segment/Box 的 disjoint 中的错误
      • 修复了各种算法中非笛卡尔几何体的处理
  • Hash:
    • 支持 char16_tchar32_tu16stringu32string
  • Log:
    • 常规更改
      • 改进了与 Solaris 的兼容性。
    • 有关更多详细信息,请参阅 changelog
  • 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 (#7495, PR#18)
    • 隐式选项的解析现在可以使用来自下一个令牌的值。自 1.59 以来,除非隐式选项的值与选项本身在同一个令牌中指定,否则将使用隐式值。这被证明是不方便的,现在我们再次检查下一个令牌,如果它本身不是选项,则将其用作值。(#25)
  • Python:
    • eval()exec()exec_statement() 现在除了 boost::python::str 之外,还允许 char const * 参数。
    • boost::python::numeric API 已被删除,因为它正在被 boost::python::numpy 取代。
    • 修复了将 Python3 与 MSVC 一起使用时的一些构建问题。
  • Smart Pointers:
    • 新类模板 atomic_shared_ptr,它为 shared_ptr 提供线程安全的原子指针操作。(Peter Dimov)
    • 新类模板 local_shared_ptr,其中引用计数使用非原子操作更新。(Peter Dimov)
    • allocate_sharedmake_shared 针对数组的更多优化。(Glen Fernandes)
    • 文档已完全以 Asciidoc 格式重写。
  • Test:
    • Boost.test v3.6 请参阅 Change log 部分以获取更多详细信息。
    • 新功能
      • C++17 兼容性(在 VS2017 上测试),感谢 Daniela Engert
      • BOOST_TEST 中 C 数组的直接比较
      • 更好的全局 fixture 机制,以及使用 BOOST_TEST_GLOBAL_FIXTURE 进行全局 fixture 和 BOOST_TEST_GLOBAL_CONFIGURATION 进行全局初始化(编译时配置)的责任分离。
      • 改进了对 fixture 的支持 (setup / teardown 成员函数),这可以更好地进行 teardown 时间检查
    • 破坏性更改
      • 记录器的一些 API 更改
      • 弃用 BOOST_GLOBAL_FIXTURE,转而使用 BOOST_TEST_GLOBAL_FIXTUREBOOST_TEST_GLOBAL_CONFIGURATION(见上文)
    • Bug fixes
  • Thread:
  • 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 所必需的,以便可以在兼容的容器之间合并和提取节点。
    • 为长期弃用的函数添加了 deprecated 属性。
    • 改进了 C++11 编译器上 allocator_traits constructdestroy 的使用,在适当的时候使用分段对构造。
    • 在较新的 Oracle 编译器上减少了解决方法。
    • 避免取消引用指向未初始化内存的指针 (PR #5)。
  • Utility:
    • 改进了 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 已修复,现在可以与视图和其他 Forward Sequences 一起使用(感谢 Mikhail Maksimov 的修复)#8554, #10041, PR#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 管理了此版本。