Boost C++ 库

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

版本 1.69.0

版本 1.69.0

2018 年 12 月 12 日 02:58 GMT

文档

下载
平台文件SHA256 哈希值
unixboost_1_69_0.tar.bz28f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406
boost_1_69_0.tar.gz9a2c2819310839ea373f42d69e733c339b4e9a19deab6bfec448281554aa4dbb
windowsboost_1_69_0.7zaf05616f71006f97833e130aad886c96136457511ace4b5496d6566e69cbe0ca
boost_1_69_0.zipd074bcbcc0501c4917b965fc890e303ee70d8b01ff5712bae4a6c54f2b6b4e52
* 下载链接由 C++ 联盟的捐赠支持。

非 Windows 用户注意事项

Boost 构建系统现在支持可见性。如果您正在构建共享库,它们将默认使用隐藏可见性。因此,Boost 共享库变得更小,加载更快,并且发生符号冲突的机会更少。

有关更多信息,请参阅 Boost.Build 可见性和 local-visibility

要禁用该功能,您可以使用命令行 ./b2 visibility=global 进行构建。

新库

  • Safe Numerics: Robert Ramey 提供的用于保证 C++14 及更高版本中整数算术正确的库。

更新的库

  • Any:
    • 修复了可见性问题。现在,在一个具有隐藏可见性的共享库中构造的 boost::any 变量可以在另一个具有隐藏可见性的共享库中使用和销毁。
    • 维护:删除了一些对其他 Boost 库的依赖,修复了文档。
  • Asio:
    • 修复了使用 libstdc++ 检测 std::future 可用性的问题。
    • 修复了 read_until 的 regex 重载中的编译错误。
    • 修复了移动已取消的计时器时可能发生的计时器堆损坏问题。
    • 修复了使用较新的 clang/libc++ 检测 std::experimental::string_viewstd::string_view 的问题。
    • 修复了 MSVC 版本检测 std::invoke_result 的可用性问题。
    • 如果 decltype 可用,则修复了缓冲区序列特征以测试新要求。
    • 修复了禁用异常时使用 MSVC 构建的问题。
    • 为 TLS v1.3 添加了 SSL 上下文选项。
    • 添加了 TLS v1 支持的编译时测试。
    • 修复了用于测试 TLS v1.2 支持的宏。
    • 防止全局对象在 Windows 上每个线程创建一次。
    • 修复了在默认构造的解析器结果上使用 size()max_size()empty() 时发生的崩溃。
    • 更改为移动 basic_resolver_results::begin() 中的返回值以避免复制。
    • 为 Intel 编译器启用了移动支持。
    • 修复了使用 clang-cl 时 std::string_view 检测问题。
    • 修复了 io_context::executor_type::dispatch 的处理程序跟踪操作名称。
    • 修复了解析具有 64 位范围 ID 的地址字符串时可能发生的缓冲区溢出。
    • 添加了展示如何编写组合操作的示例。
    • 添加了 C++11 版本的超时、计时器、SOCKS4 和 SSL 示例。
    • 修复了文档和示例中的小问题。
  • Assign:
    • 添加了右值引用、完美转发和可变参数模板支持 (PR#6) (#10477)
    • 避免转换为容器的分配器 (PR#29) (#5419) (#7364)
  • Beast:
    • 此版本修复了示例中的一些问题,并提供了一个新的实验性套接字,该套接字支持异步操作的内置超时。
    • 新的 CppCon 2018 websocket 聊天示例演示视频
    • 有关完整的更改列表,请查看官方的发行说明
  • CircularBuffer:
    • 使用空基类优化来存储空且非 final 的分配器 (Glen Fernandes)。
  • Concept Check:
    • 删除了对 mpl 的依赖。( PR#14)
  • Context:
    • #85: 重复别名应缺少 GCC 别名
    • #87: clang-win 工具集 (clang-cl.exe) 使用底层 msvc 中的 masm
    • #90: 删除 Jamfile.v2 中的无用行
    • #91: 为 *_elf_gas.S 文件添加 .file 段
  • Core:
    • 实现了 boost::empty_value,供库作者方便地利用空基类优化来存储可能为空类型的对象 (Glen Fernandes)。此功能现在已在 Boost.Beast、Boost.CircularBuffer、Boost.MultiArray 和更多库中使用。
    • 实现了 boost::quick_exit 以提供 C++11 标准库功能 std::quick_exit 的功能 (Peter Dimov)。
    • 减少了 Lightweight Test 中的静态变量数量,并对 MSVC 编译器在未能调用 boost::report_errors 时采用了更轻量的中止行为 (Glen Fernandes)。
  • DLL:
    • 解决了智能库 #20 的链接问题。
    • 维护:修复了文档和测试。
  • Dynamic Bitset:
    • 性能改进(在某些情况下超过 2 倍)。(PR#26)
    • 添加了基于范围的 set、reset、flip 方法 (PR#27)
  • Fiber:
    • #181: unbuffered_channel push 未返回
    • #182: 删除文件开头的 UTF-8 BOM
    • #183: 修复 boost-install 使用;应该只发出一次
  • Filesystem:
    • 在 Linux 和 Android 上不要使用 readdir_r,因为 readdir 函数已经是线程安全的。( PR#68, #72)
    • 修复了由于实现中未定义的行为导致 boost::filesystem::copy 中的崩溃。( PR#71)
    • 修复了 boost::filesystem::directory_iterator 实现中未定义的行为。( PR#77)
    • 修复了将目录迭代器与 BOOST_FOREACH 一起使用时的编译错误。
    • 删除了旧版本 PGI C++ 编译器的解决方法,以修复在新版本上的编译。( PR#49)
    • 修复了关于窄化转换的 MSVC 警告。( PR#44)
  • Flyweight:
    • 修复了 GCC 中与 Boost.MPL 占位符表达式处理相关的一些问题。
    • 维护修复。
  • Function:
    • 删除了对 mpl、test 的依赖 (PR#20) (PR#22)
  • Geometry:
    • 改进
      • PR#486 Karney 的直接大地测量问题解决方案供内部使用 (感谢 Adeel Ahmad)。
      • PR#490 离散 Frechet 和 Hausdorff 距离算法 (感谢 Yaghyavardhan Singh Khangarot)。
      • PR#496 新的运行时和升级的编译时 SRS 转换接口(由于潜在的接口更改,目前未记录在案)。
    • 已解决的问题
      • #520 缺少 dsv() 的文档。
      • #521 distance() 的文档描述错误。
      • #524 修复了“switch 中未处理枚举值”警告。
      • #527 VS 2017 (msvc-15) 的解决方法。
    • Bugfixes
      • PR#505 修复了叠加算法中的溢出 (感谢 Dane Springmeyer)。
      • PR#518 修复了在 append() 中传递临时对象的问题 (感谢 xventura81)。
      • PR#522 在构建文档中支持 python3。
  • GIL:
    • 已更改
      • 重构库包含以使用 #include <boost/gil/...> 结构 (PR#145)。
    • 已删除
      • 标头 include/boost/gil_all.hpp 文件已弃用 (PR#145)。
      • 标头 include/boost/gil_concepts.hpp 文件已弃用 (PR#145)。
      • 标头 include/boost/gil_config.hpp 文件是不必要的 (PR#144)。
    • 已修复
      • 修复了 point<T> 除法和乘法运算,使其不再硬编码结果为 point<double> (PR#157)。
      • 修复了 std::fill_nboost::range::fill_n 之间的冲突 (PR#152)。
      • 修复了从 for_each_pixel 重新分配 functor 的问题 (PR#139)。
      • 修复了在依赖名称 axis_iterator 之前的模板关键字缺失的问题 (PR#129)。
  • Integer:
    • boost/pending/integer_log2.hpp 标头已弃用,将在未来的版本中删除。请改用 boost/integer/integer_log2.hpp
  • Iostreams:
    • 删除对 std::fpos 的不存在成员 seekpos() 的调用 (PR#58)
  • Iterator:
    • 修复了在迭代器类型涉及 boost 命名空间中的类型时,对 advancedistance 的不明确非限定调用的编译问题。( #43)
  • LexicalCast:
    • 修复了符号转换警告 #8991
    • 维护:删除了一些对其他 Boost 库的依赖,修复了构建系统警告。
  • Log:
    • 常规更改
      • 更新了 syslog sink 后端,以避免使用已弃用的 Boost.ASIO 接口。( #59)
    • Bug fixes
      • 修复了在某些情况下,文本文件 sink 目标目录中旋转文件的总大小可能估计不正确的问题。
    • 有关更多详细信息,请参阅 changelog
  • Logic:
    • 重大更改: 在可用时使用显式 operator bool (PR#5)
  • Math:
    • 添加 LambertW 函数。
    • 更新积分例程以支持复值被积函数和轮廓积分。
    • 添加了 Barycentric 有理逼近的导数。
    • 小幅修复以更好地支持可变精度浮点类型。
    • 删除已弃用的 Boost.Endian 的使用,转而使用 Predef。
    • 更新了连分数和级数评估代码以支持复数类型。
    • 防止导致 toms748_solve 中无限循环的逻辑错误。请参阅 #138
    • 修复了 extreme_value_distribution 的 mean 和 standard_deviation。请参阅 #139
    • 改进了 newton_raphson_iterate 中使用的启发式方法。请参阅 #145
    • 修复了 erf(NaN) 的结果。请参阅 #141 #141
    • 大力减少 GCC 警告。请参阅 #136 #136
    • 重构多项式加法。请参阅 PR#132
    • 修复了 vxWorks 在全局命名空间中具有 real 函数的问题。请参阅 PR#131
    • 改进了 sinc 逼近并添加了更好的测试。
    • 修复了 Student's T 假设检验文档中的拼写错误,请参阅 #143
  • Mp11:
    • 实现了 mp_starts_with 功能 (Glen Fernandes)。
  • MultiArray:
    • 改进了 C++11 分配器模型支持,包括:支持 C++11 最小分配器,支持有状态分配器,使用分配器进行值类型的构造和析构,以及使用空基类优化来存储空或无状态分配器 (Glen Fernandes)。
  • Multi-index Containers:
  • Multiprecision:
    • 重大更新,以更好地支持可变精度类型,以便结果的精度始终是所有参数中最高的。
    • 为 __cpp_int 中 final 的分配器添加支持 (Glen Fernandes)。
    • 删除已弃用的 Boost.Endian 的使用,转而使用 Predef。
    • 添加了对 std::string_view 的支持。
    • 修复了常量初始化中的小错误。请参阅 #67
    • 使将非有限值赋值给 cpp_int 成为运行时错误。请参阅 #58
    • cpp_bin_float_octcpp_complex_oct 添加了 typedef。
  • PolyCollection:
    • 添加了 Boost.PolyCollection 特定的算法版本 std::for_each_nstd::sample
  • Pool:
    • 替换 boost::mutex 的使用以避免对 Boost.Thread 的依赖 (PR#23)
  • Preprocessor:
    • 支持 VC++ 14.1 中新的符合 C++ 标准的预处理器,该预处理器目前通过在 Visual Studio 2017 15.8 及更高版本中使用 /experimental:preprocessor 开关启用。
  • Rational:
  • Spirit:
    • Spirit.X3
      • 放弃自己的 FP 例程,转而使用 boost::math (#392) (#13531)
      • 异常类型上缺少可见性标记 (#409)
      • to_utf8: 修复了 Windows 上的 wchar_t 处理 (#413) (#395)
    • Spirit V2
      • 放弃自己的 FP 例程,转而使用 boost::math (#392) (#13531)
      • 异常类型上缺少可见性标记 (#409)
      • 修复了 transform_attribute 歧义 (#407) (#396)
      • to_utf8: 修复了 Windows 上的 wchar_t 处理 (#413) (#395)
    • Spirit.Classic
      • 异常类型上缺少可见性标记 (#409)
  • Stacktrace:
    • libbacktrace 的使用得到了显著改进。鼓励 BOOST_STACKTRACE_USE_BACKTRACEboost_stacktrace_backtrace 用户进行更新
      • 内存消耗下降。
      • 堆栈捕获速度提高了一个数量级。
      • 启用 syminfo 回退以提供即使没有调试信息的可见符号信息(感谢 github 用户 driesdeschout!)#60, #61
      • backtrace.h 标头的确切位置现在可以通过 BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE 指定,以允许在其他方式无法访问该标头的平台和编译器上使用 backtrace.h 标头(例如 Ubuntu Xenial + Clang)#59
    • 如果设置了 max_depth,则优化了堆栈捕获(感谢 Jan Eisenhauer 的 PR!)#67
    • 为将堆栈跟踪快速转换为 std::string 添加了 to_string(const stacktrace& ) 函数 #57
    • 维护:更新了文档 #62,更新了测试。
  • System:
    • Boost.System 现在是仅标头库。仍然构建了一个存根库以实现兼容性,但不再需要链接到它。
    • 更多函数已标记为 constexpr
    • error_category 的析构函数现在是 protected,不再是 virtual。这是一个潜在的重大更改,但预计其影响有限。
    • error_category 现在具有一个接受 64 位标识符的构造函数,使不同的类别对象可以比较相等。
    • error_category 的构造函数现在是 protected
    • 添加了 message 的非分配、非抛出重载。
    • 添加了虚函数 failed,允许成功与 0 不同步的类别。
    • 已删除已弃用的 boost::system::throws 对象。
    • boost::throws() 现在已弃用,不建议使用。
    • 现在 system_error 的接受单个 error_code 参数的构造函数是 explicit 的。
    • system_error::code() 现在按值返回。
  • Test:
    • Boost.test v3.9 请参阅 更改日志 以获取更多详细信息。
    • 新功能
      • 正式支持具有多个翻译单元的 Boost.Test 的仅标头变体。
      • 现在可以通过使用 BOOST_TEST_CASE_NAME 指定测试用例的名称来手动添加测试用例
      • 更好地支持日志中的 boost::exception
    • Bug fixes and pull requests
  • TypeIndex:
    • 修复了回归并加快了 boost/type_traits.hpp 标头的解析速度,提高了 30%(感谢 Nikita Kniazev 的 PR!)#21
  • Utility:
    • 通过避免对声明为 final 的类型进行空基类优化,为 boost::compressed_pair 添加了对不可继承的空类型的支持 (Glen Fernandes)。
  • Variant:
    • 修复了可见性问题。现在,boost::bad_visit 异常可以跨越具有隐藏可见性的共享库的边界,并且可以在另一个具有隐藏可见性的共享库中捕获。
  • YAP:
    • 小幅更改以支持 MSVC++ 版本 14.15(Visual Studio 2017 版本 15.8)。
    • 文档修复。

已停止维护的库

  • Signals (v1) 现在已删除。其删除已在 1.68 中宣布,其弃用已在 1.54 中宣布。Boost 1.68 是提供此库的最后一个版本。鼓励用户改用 Signals2。Boost 社区感谢 Douglas Gregor 在 Signals 上的工作,Signals 为其用户提供了良好的服务,并且也启发了 Signals2。

测试编译器

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, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.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, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.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 和 Michael Caisse 管理了此版本。