Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Version 1.68.0

Version 1.68.0

2018年8月9日 03:46 GMT

文档

下载
平台文件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: 抛出异常 "Operation not permitted"
    • NUMA 支持已移至额外的库 (fiber-numa); 通过属性 numa 启用 (numa=on)
  • Fusion:
    • 为 GCC 4.4/c++0x 上 fusion::deque 构造函数的歧义调用添加了解决方法 (PR#178, commit)。
    • 修复了 C 风格数组的错误 (PR#177)。
    • 修复了 fusion::for_each 签名以按值获取 functor (#4427)。
      • 这可能会破坏具有不可复制(不可移动)functor 的现有代码,但该实现在很长一段时间内都是不正确的;文档从一开始就是正确的。 因此,请确保您的用法。
    • 修复了 fusion::transform 上意外的 MPL 占位符替换错误 (#5490)。
    • 将如何使 Fusion 序列符合 MPL 序列的描述移至 mpl 部分 (#4029)。
    • 为适配类型添加了关于 IO 功能的注释 (#6091)。
  • Geometry:
    • 改进
      • 469 SRS 转换中的水平网格偏移 (nadgrids)(由于潜在的接口更改,目前未记录)。
      • 478 球面和地理坐标系的 Box-Segment 距离。
      • 487 球面和地理 cs 距离中缺少几何图形组合
      • 489 用于内部使用的其他直接大地测量问题公式
    • 已解决问题
      • 470 短球面和地理线段的断言失败。
      • 471 球面多边形的无效包络线
      • 498 球面和地理 CS 的 expand() 和 make_inverse() 的意外结果
      • 504 未使用的参数警告。
    • Bug 修复
      • 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#88, PR#98, PR#102)
    • 修复了测试和示例中的一些问题 (PR#85, PR#105)
  • Lexical Cast:
    • 修复了 clang-tidy 警告 #12092
  • Log:
    • 改进了对 VxWorks 的支持。 (PR#39)
    • dump 流操作符实现中,在 x86 PIE 目标上保存和恢复 ebx 寄存器。
  • Math:
    • 支持任意精度复值积分,从而支持轮廓积分
    • 提高多项式加法的性能
    • 继续改进数值积分例程,特别是添加对轮廓积分的支持。
    • 提高 erfc 函数有理逼近的精度。
  • Multi-index Containers:
    • 现在可以序列化可移动但不可复制元素的容器(ticket #13478)。 感谢 Sébastien Paris 的报告。
    • multi_index_container 的默认构造函数不再是 explicit(ticket #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 更改的支持。
    • 修复了当指数类型为 long long 时,或者当我们转换为比我们更宽的整数时,cpp_bin_float 中的各种转换错误。
    • 修复了由 std::byte 的引入引起的与 GCC-8 的兼容性问题。
  • Optional:
    • 为了与 std::optional 兼容,添加了成员函数 has_value() (issue #52)。
    • 添加了成员函数 map(),用于使用类型为 T -> U 的函数将 optional<T> 转换为 optional<U>
    • 添加了成员函数 flat_map(),用于使用类型为 T -> optonal<U> 的函数将 optional<T> 转换为 optional<U>
  • Predef:
    • 添加了对 __ARM_ARCH 宏的支持。 (来自 Tim Blechmann)
    • 添加了对 PTX 架构的检测。 (来自 Benjamin Worpitz)
    • 添加了 nvcc 编译器检测。 (来自 Benjamin Worpitz)
    • 添加了对检测 CUDA 的支持。 (来自 Benjamin Worpitz)
    • 移除了对过时的 BOOST_ARCH_AMD64 的引用。 (来自 Peter Kolbus)
  • Program Options:
    • 支持选项的多个长名称,感谢 Eyal Rozenberg (PR#53)
  • Python:
    • Bug 修复,以纠正自动链接支持 (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 bug 中的 constexpr 问题 (PR#379)。
      • 修复了 calc4b 示例编译 (PR#384)。
      • 小代码改进 (PR#374)。
    • Spirit.Qi
      • 通过排列和 sequence_or 运算符修复了 ADT 支持 (PR#376)。
      • 为随机访问专门化 iterator_source (PR#383)。
      • 移除了 skip_over 中的冗余检查 (PR#373)。
    • Spirit.Karma
      • 修复了 get_absolute_value 函数中的 UB (PR#246)。
      • 修复了如果 ADT getter 按值返回,则在使用后超出范围的错误 (PR#375 #6126)。
    • Spirit.Classic
  • Stacktrace:
    • 修复了在 Solaris 和其他平台上的编译问题,这些平台在 dladdr 函数中将地址限定为 const (github 54)。
    • 放弃了对 Boost.LexicalCast 的依赖。
  • Test:
    • Boost.test v3.8 请参阅 更改日志 以获取更多详细信息。
    • 重大变更
      • master_test_suite_t 对象不再可复制
    • 新特性
      • 数据集测试用例现在可以使用命令行参数
    • Bug 修复和 Pull 请求
  • TypeIndex:
    • 放弃了对 Boost.MPL 的依赖。
  • Uuid:
    • 重大变更: 为向后兼容性移除了 sha1 detail 命名空间头文件重定向 (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 管理了此版本。