Boost C++ 库

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

版本 1.64.0

版本 1.64.0

2017 年 4 月 19 日 17:42 GMT

文档

下载
平台文件SHA256 哈希
unixboost_1_64_0.tar.bz27bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
boost_1_64_0.tar.gz0445c22a5ef3bd69f5dfb48354978421a85ab395254a26b1ffb0aa1bfd63a108
windowsboost_1_64_0.7z49c6abfeb5b480f6a86119c0d57235966b4690ee6ff9e6401ee868244808d155
boost_1_64_0.zipb99973c805f38b549dbeaf88701c0abeff8b0e8eaa4066df47cac10a32097523
* 下载链接由 C++ 联盟 的捐赠支持。

第三方下载

新库

  • Process: Klemens D. Morgenstern 的进程库,它提供跨平台的方式,允许您
    • 创建子进程
    • 为子进程设置流
    • 通过流与子进程通信(同步或异步)
    • 等待进程退出(同步或异步)
    • 终止进程
    已损坏的功能

更新的库

  • Any:
    • 抑制了关于返回临时引用的虚假警告
    • 现在使用 boost::addressof 而不是直接取地址 #12615
    • 不再使用双引号包含头文件 #12053
    • CI 测试现在使用 addressleakundefined 清理器运行
    • 添加了更多测试
  • Atomic:
    • 修复了在较旧于 4.7 的 gcc 版本和兼容编译器上,32 位 x86 上 64 位原子操作中可能出现的错误代码生成。
  • Config:
    • 添加了 BOOST_NO_CXX11_SFINAE_EXPR 缺陷检测。
  • Context:
    • 新 API:call/cc
    • 已弃用的 API:执行上下文
    • 修复了 MIPS 上的堆栈操作
    • #12719 使用 mingw-w64 构建时出现段错误
    • #12948 Android ARM 上出现意外的 snprintf 结果
    • #38: context_entry() 在 macOS 上崩溃
    • #39: Android 上使用 Clang 3.8 在 aarch64 上出现未知指令 .cpu
    • #41: std::bind() 无法使用 invoke()
    • #46: "重命名 continuation 成员函数" 错过了一个地方
    • #50: ppc64/sysv/elf 上的 fcontext 出现错误的汇编
  • Conversion:
    • 文档已移植到 Quickbook(感谢 Mikhail Maksimov 的移植)
    • 修复了测试中的内存泄漏(感谢 Mikhail Maksimov 的修复)
    • CI 测试现在使用 addressleakundefined 清理器运行
  • Core:
    • 在支持 C++11 constexpr 和 SFINAE 表达式的编译器上实现了 constexpr addressof (Glen Fernandes)。BOOST_CORE_NO_CONSTEXPR_ADDRESSOF 宏指示何时 constexpr addressof 不可用。
    • lightweight_test.hpp 中,为测试容器内容添加了新宏 BOOST_TEST_ALL_EQBOOST_TEST_ALL_WITH (Bjorn Reese)。
  • Coroutine2:
    • #4: coroutine2<> 不接受 std::bind
  • DLL:
    • 修复了 WinCE 编译
    • 添加了 boost:dll::symbol_location_ptr 函数,用于通过无法解引用的指针获取符号的位置(例如 void 指针)
    • 修复了成员指针的 detail::aggressive_ptr_cast 中的 UB
    • 修复了实验性智能导入中的泄漏
    • 修复了警告
    • CI 测试现在使用 addressleak 清理器运行
  • Fiber:
    • 移除了 (un)bounded_channel<>
    • #100: ASIO: unbuffered_channel / 调度程序通知问题
    • #105: skynet 变体在 Windows 上崩溃
    • #106: 将 fixed_stack 分配器传递给 async/packaged_task 无法编译
    • #110: ARMv6 上出现编译错误
    • #111: buffered_channel::try_value_pop() 中的无限循环
    • #114: buffered_channel::try_push 不会唤醒 `pop` 中的纤程
  • Geometry:
    • 改进
      • 矩阵转换现在基于 Boost.QVM 而不是 Boost.Ublas
    • 重大更改
      • ublas_transformer 重命名为 matrix_transformer
      • 显式修饰符已添加到 rtree index::dynamic_* 参数的构造函数中
      • strategy::area::huiller 被 strategy::area::spherical 替换
    • 已解决的问题
      • 363 geometry/index/parameters.hpp 中缺少包含
      • 364 当参数使用不同的点类型时,within(Linear, Areal) 编译错误
      • 370 将 Ring 作为输入时,Buffer 段错误
    • 已解决的票证
      • 11899 boost::geometry::equals 不处理开放多边形
      • 11930 area::huiller 策略的不准确性
      • 11931 具有包围极点的多边形的错误球面面积
      • 12410 correct() 中缺少对地理坐标系的支持
      • 12566 当对值包含原始指针时,equal_to<> 中出现歧义模板实例化
      • 12861 stdlibc++ (gcc 4.8.2) 中影响 rtree 的段错误
      • 12885 使用 BOOST_THROW_EXCEPTION 而不是 throw
    • 错误修复
      • 修复 get_turn_info 中的 distance_measure
  • Hash:
    • std::unary_functionstd::binary_function 不可用时,停止使用它们。
  • Interprocess:
  • LexicalCast:
    • 修复了多个警告 #11842
    • CI 测试现在使用 addressleakundefined 清理器运行
  • Math:
    • 大力推进以确保 C99 中的所有函数也与附录 F 兼容。
    • 改进了贝塞尔函数 I0、I1、K0 和 K1 的精度,请参见 12066
  • Multi-index Containers:
    • 修复了在存在多个排名索引时与歧义引用相关的错误(票证 #12955)。
    • 维护修复。
  • Multiprecision:
    • cpp_bin_float 中,防止在转换为非规范化浮点数时出现双舍入。请参见 #12527
    • 修复了非常小的整数的整数平方根中的错误。请参见 #12559
    • 修复了在 cpp_bin_float 中转换为带符号零的错误。
    • 更改 cpp_bin_float 舍入代码以在任意位置舍入,以便我们可以将其用于转换,请参见 #12527
    • 提高了 128 位位扫描操作的性能。
    • 修复了 cpp_bin_float 中非常小的数量的减法。请参见:#12580
    • 使错误处理符合 C99 附录 F。请参见 #12581
    • 修复了普通 cpp_int 的按位导出,请参见 #12627
    • 修复了 ilogb (以及使用它的代码),使其在参数为零时始终返回指数类型的最小值,请参见 #12625
    • 允许从 __float128 转换为 cpp_bin_float
    • 修复了 cpp_int 左移位中会导致位丢失的错误,请参见 #12790
    • 修复了由过度激进的 constexpr 优化引起的有界但可变精度的 cpp_int 中的错误,请参见 #12798
  • Predef:
    • 修复了 Intel C/C++ 编译器版本规范。
    • 添加了 BOOST_VERSION_NUMBER_MAJORBOOST_VERSION_NUMBER_MINORBOOST_VERSION_NUMBER_PATCH 宏,用于从有效的版本号中提取组件。
    • 更改了 VS 版本编号。VS2015 之后的版本将使用编译器版本而不是不同的产品版本。
  • Regex:
    • 使用 Oracle C++ 工具集进行编译不再限于静态链接。
    • 使用 libFuzzer 大力消除库中的模糊性并修复已发现的问题,请参见:#12818
  • 智能指针:
    • 重写了用于数组的allocate_sharedmake_shared,以实现更优化和更易于维护的实现 (Glen Fernandes)
    • 具有移动语义的指针转换函数 (Chris Glover)
  • 测试:
    • Boost.test v3.5,详情请参阅变更日志部分。
    • 新特性
      • 现在,Boost.Test为记录用户自定义类型提供了自定义点
      • JUnit 输出格式现在可以具有日志级别
      • 当测试模块具有大量检查时,JUnit 输出格式的性能得到了提高
    • Bug 修复
  • TypeIndex:
    • 添加了BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST,它实现了 runtime_cast 的功能,但不包含 BOOST_TYPE_INDEX_REGISTER_CLASS 宏(感谢 Chris Glover 实现了它)
    • 修复了 stl_type_index.hpp 中未定义宏的警告 #12739
    • CI 测试现在使用 addressleakundefined 清理器运行
  • TypeTraits:
    • 添加了新的 traits make_voidvoid_t
  • Unordered:
    • 初始支持新的 C++17 成员函数:unordered_map 中的 insert_or_assigntry_emplace,以及所有容器中的 mergeextract
  • Variant:
    • 修复了从 recursive_variant_ 构建 variant 的问题 (感谢 Mikhail Maksimov 的修复) #12508, #12645
    • 不要为 MSVC2015Update1 启用可变参数模板,因为它仍然存在问题 #12236
    • 解决 GCC6 崩溃的问题 (感谢 Mikhail Maksimov 的解决方案) #12680, #7120
    • 使 boost::polymorphic_*get 在未记录的边界情况下像 boost::*get 一样工作,并修复了测试 #11950
    • CI 测试现在使用 addressleakundefined 清理器运行

测试的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.0, 3.8.1, 3.9.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.1, 3.9.1
    • Clang, C++14: 3.5, 3.6, 3.7.1, 3.8.1, 3.9.1
    • Clang, C++1z: 3.9.1
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.2.0
    • GCC, C++14: 5.4.1, 6.2.0, 6.3.0
    • GCC, C++1z: 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X
    • Apple Clang: 7.0.2
    • Apple Clang, C++11: 7.0.2
  • Windows
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0
    • GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
    • GCC, C++14, mingw: 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
  • Android
    • Clang: 3.6, 3.7, 3.8
    • GCC: 4.9, 5.4, 6.2
  • FreeBSD
    • Clang: 3.8
    • Clang, C++11: 3.8
    • Clang, C++14: 3.8
    • Clang, C++1z: 3.8
  • QNX
    • QCC: 4.4.2
  • SunOS
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.8.1, 3.9.1
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.8.1, 3.9.1
    • Clang, C++14: 3.4, 3.5, 3.6, 3.7. 3.8, 3.8.1, 3.9.1
    • Clang, C++1z: 3.9.1, 4.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 6.2.0
    • GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.4, 6.2.0
    • GCC, C++14: 5.4.1, 6.2.0, 6.3.0, 7.0.1
    • GCC, C++1z: 6.2.0
    • Intel: 16.0, 17.0
    • Intel, C++11: 16.0, 17.0
    • Intel, C++14: 16.0, 17.0
  • OS X
    • Apple Clang: 7.0.2
  • Windows
    • GCC, C++03, mingw: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.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, 6.2
  • FreeBSD
    • Clang, C++98: 3.8
    • Clang, C++11: 3.8
    • Clang, C++14: 3.8
    • Clang, C++1z: 3.8
  • QNX
    • QCC: 4.4.2
  • SunOS
    • Oracle Solaris Studio: 12.5
    • Oracle Solaris Studio, C++11: 12.5

致谢

Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了本次发布。