Boost C++ 库

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

版本 1.68.0

版本 1.68.0

2018年8月9日 格林尼治标准时间03:46

文档

下载
平台文件SHA256 哈希值
Unixboost_1_68_0.tar.bz27f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7
boost_1_68_0.tar.gzda3411ea45622579d419bfda66f45cd0f8c32a181d84adfa936f5688388995cf
Windowsboost_1_68_0.7z59804d8fad02cf3b09485f3dbc0f9097c05fc1e0123f0c133b35a6c6f601109a
boost_1_68_0.zip3b1db0b67079266c40b98329d85916e910bbadfc3db3e860c049056788d4d5cd
* 下载链接由 C++ 联盟 的资助支持。

Windows 用户须知

Boost.WinAPI 已更新,默认情况下尽可能以 Windows 7 为目标。在之前的版本中,Windows Vista 是默认目标。

Boost.WinAPI 在许多 Boost 库中被用作 Windows SDK 抽象层,包括 Boost.Beast、Boost.Chrono、Boost.DateTime、Boost.Dll、Boost.Log、Boost.Process、Boost.Stacktrace、Boost.System、Boost.Thread 和 Boost.UUID。要选择目标 Windows 版本,请在编译 Boost 和用户代码时将 BOOST_USE_WINAPI_VERSION 定义为类似于 _WIN32_WINNT 的数字版本。例如

    b2 release define=BOOST_USE_WINAPI_VERSION=0x0501 stage

Windows API 版本号列表可以在页面上查看。

新增库

  • YAP: Zach Laine 编写的用于 C++14 及更高版本的表达式模板库。

更新的库

  • Beast:
    • 此版本修复了在实现中使用的所有组合操作中缺少执行器工作保护的问题。建议遇到与异步完成处理程序相关的崩溃的用户升级。
    • 有关更改的完整列表,请查看官方的发行说明
  • Context:
    • #78: context-impl=ucontext 的链接器错误:boost::context::detail::current_rec 的多重定义
  • Coroutine2:
    • #14: 堆栈展开时崩溃
    • #18: 关于为什么使用 coroutine2 的一些指导
    • #20: 由于错误 C2039 导致测试编译失败
    • #22: 未定义行为文档
  • Fiber:
    • #170: buffered_channel::try_push 的文档不正确
    • #172: WIN64: 使用 mingw-w64 构建时出现“从 'HANDLE' 到 'std::thread::native_handle_type' 的无效转换”错误
    • #175: 抛出异常“不允许的操作”
    • NUMA 支持移至额外库 (fiber-numa);通过属性 numa 启用 (numa=on)
  • Fusion:
    • 为 GCC 4.4/c++0x 上 fusion::deque 构造函数的不明确调用添加了变通方法(PR#178提交)。
    • 修复了 C 风格数组的错误(PR#177)。
    • 修复了 fusion::for_each 签名以按值获取函子(#4427)。
      • 这可能会破坏具有不可复制(不可移动)函子的现有代码,但该实现长期以来都不正确;文档从一开始就是正确的。因此,请确保您的用法。
    • 修复了 fusion::transform 上无意的 MPL 占位符替换错误(#5490)。
    • 将关于如何使 Fusion 序列符合 MPL 序列的描述移至 mpl 部分(#4029)。
    • 添加了关于适配类型的 IO 工具的注释(#6091)。
  • Geometry:
    • 改进
      • 469 SRS 转换中的水平网格偏移 (nadgrids)(由于潜在的接口更改,目前未记录)。
      • 478 球面和地理坐标系的框段距离。
      • 487 球面和地理坐标系距离中缺少几何组合
      • 489 用于内部使用的其他直接测地线问题公式
    • 解决的问题
      • 470 短球面和地理线段的断言失败。
      • 471 球面多边形的无效包络
      • 498 expand() 和 make_inverse() 对球面和地理坐标系的意外结果
      • 504 未使用的参数警告。
    • 错误修复
      • 488 在 closing_iterator 和 ever_circling_range_iterator 中处理非真引用
      • 495 VxWorks 7 交叉编译问题。
  • GIL:
    • 新增
      • 该库现在需要符合 C++11 标准的编译器。
      • 新的顶级一体化 include/boost/gil.hpp 头文件(PR#70)。
      • 新的工具箱扩展,已审查并被 Boost 接受
    • 更改
    • 移除
      • IO v1 扩展已被 IO v2 取代。
  • Graph:
    • 有条件地将已弃用/删除的 C++98 std::bind1st 替换为 std::bind,将 std::auto_ptr 替换为 std::unique_ptr,并将 std::random_shuffle 替换为 std::shuffle。(PR#89
    • 修复 VS2015 上发布版本中的编译器错误(PR#84
    • 修复 Stanford GraphBase 示例(PR#87
    • 修复 iterator_core_access 的友元声明(PR#103
    • 添加缺少的 <boost/iterator.hpp> 包含(PR#104
    • 避免未使用的变量警告(PR#90
    • 修复文档中的一些拼写错误(PR#88PR#98PR#102
    • 修复测试和示例中的一些问题(PR#85PR#105
  • Lexical Cast:
    • 针对 clang-tidy 警告的修复 #12092
  • Log:
    • 改进了对 VxWorks 的支持。(PR#39
    • dump 流操纵器实现中,在 x86 PIE 目标上保存和恢复 ebx 寄存器。
  • Math:
    • 支持任意精度复值求积,因此支持轮廓积分
    • 提高多项式加法的性能
    • 继续改进数值积分例程,特别是添加对轮廓积分的支持。
    • 提高 erfc 函数的有理逼近的精度。
  • Multi-index Containers:
    • 现在可以序列化可移动但不可复制元素的容器(问题单 #13478)。感谢 Sébastien Paris 的报告。
    • multi_index_container 的默认构造函数不再是 explicit(问题单 #13518)。
  • Multiprecision:
    • 添加了对复数多精度数的支持。
    • 将转换为无符号整数类型的行为更改为截断,以匹配标准定义的行为。
    • 更正 MPFR 字符串格式化中的错误。
    • 修复 cpp_dec_float 从 long long 转换中的未定义行为。
    • 添加对 Eigen 互操作性的支持。
    • float128.hpp:修复 Windows 上的 Intel 构建。
    • 修复扩展包含混合表达式的表达式模板时在临时变量中使用的类型。
    • 修复 gmp_float 到定点字符串转换中的无限循环。
    • 更新表达式模板,以便在您尝试执行不受支持的操作时发出带有更好错误消息的 static_asserts。
    • 修复 cpp_int 中的错误,其中递增到零不会正确设置符号。
    • 删除 std::move 的错误使用,并依赖 NVRO。
    • 修复对 MPIR-3.0 更改的支持。
    • 修复 cpp_bin_float 中的各种转换错误,当指数类型是 long long 时,或者我们要转换为比我们更宽的整数时。
    • 修复由 std::byte 的引入导致的与 GCC-8 的兼容性问题。
  • Optional:
    • 添加了成员函数 has_value() 以与 std::optional 兼容(问题 #52)。
    • 添加了成员函数 map() ,用于使用 T -> U 类型的函数将 optional<T> 转换为 optional<U>
    • 新增成员函数 flat_map(),用于使用类型为 T -> optonal<U> 的函数将 optional<T> 转换为 optional<U>
  • 预定义:
    • 添加对 __ARM_ARCH 宏的支持。(来自 Tim Blechmann)
    • 添加对 PTX 架构的检测。(来自 Benjamin Worpitz)
    • 添加 nvcc 编译器检测。(来自 Benjamin Worpitz)
    • 添加对 CUDA 的检测支持。(来自 Benjamin Worpitz)
    • 删除对已过时的 BOOST_ARCH_AMD64 的引用。(来自 Peter Kolbus)
  • 程序选项:
    • 支持选项的多个长名称,感谢 Eyal Rozenberg(PR#53
  • Python:
    • 错误修复,以更正自动链接支持(Windows)(#193
  • Rational:
    • 修复了 normalize() 中的未定义行为(PR#19)。
  • System:
    • 在 C++14 及更高版本下,将 constexpr 添加到 error_code 和 error_condition 成员(PR#23)。
  • Signals:
    • **移除通知:** Boost.Signals 将在下一个版本中移除。Boost.Signals 在 1.54.0 版本中已弃用。现在过渡到 Boost.Signals2 以避免中断。
  • Spirit:
    • Spirit.X3
      • 小型列表解析器优化(PR#368)。
      • 将容器属性通过序列解析器或一元结尾传递到序列解析器(PR#370 #12085)。
      • 更细粒度的序列属性检查消息(PR#371)。
      • 删除了 skip_over 中的冗余检查(PR#373)。
      • 在整个 x3::variant 中解决 noexcept VS2015 错误中的 constexpr 问题(PR#379)。
      • 修复了 calc4b 示例编译(PR#384)。
      • 代码的细微改进(PR#374)。
    • Spirit.Qi
      • 通过 permutation 和 sequence_or 运算符修复了 ADT 支持(PR#376)。
      • 专门为随机访问指定 iterator_source(PR#383)。
      • 删除了 skip_over 中的冗余检查(PR#373)。
    • Spirit.Karma
      • 修复了 get_absolute_value 函数中的未定义行为(PR#246)。
      • 修复了如果 ADT getter 按值返回,则作用域后使用的错误(PR#375 #6126)。
    • Spirit.Classic
      • 修复了 PR#336 中引入的回归问题(PR#386)。
      • 代码的细微改进(PR#367)。
  • Stacktrace:
    • 修复了在 Solaris 和其他在 dladdr 函数中将地址限定为 const 的平台上的编译问题(github 54)。
    • 放弃了对 Boost.LexicalCast 的依赖。
  • 测试:
    • Boost.test v3.8,请参阅更改日志了解更多详细信息。
    • 重大变更
      • master_test_suite_t 对象不再可复制
    • 新功能
      • 数据集测试用例现在可以使用命令行参数
    • 错误修复和拉取请求
  • TypeIndex:
    • 放弃了对 Boost.MPL 的依赖。
  • Uuid:
    • **重大变更:** 为了向后兼容而进行的 sha1 细节命名空间标头重定向已被移除(PR#69)。
    • 添加了对 std::hash 的支持(PR#67)。
    • 添加了对随机生成器上移动语义的支持(PR#74)。
    • 在获取熵时正确处理 EINTR(PR#74)。
    • 在 Linux 上使用 getrandom(2) 而不是 getentropy(3)(PR#75)。

测试过的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.0, 4.0.1, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++17: 5.0.2, 6.0.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X
    • Apple Clang: 9.0.0, 9.1.0
    • Apple Clang, C++11: 9.0.0, 9.1.0
    • Apple Clang, C++14: 9.0.0, 9.1.0
    • Apple Clang, C++17: 9.1.0
    • Apple Clang, C++1z: 9.0.0
  • Windows
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0
    • Clang, C++17: 5.0.2, 6.0.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X
    • Apple Clang: 9.0.0, 9.1.0
    • Apple Clang, C++11: 9.0.0, 9.1.0
    • Apple Clang, C++14: 9.0.0, 9.1.0
    • Apple Clang, C++17: 9.1.0
    • Apple Clang, C++1z: 9.0.0
  • Windows
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

致谢

Daniel James、Vladimir Prus 和 Marshall Clow 管理了此版本。