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 的 Process 库,提供跨平台的方式让您能够
    • 创建子进程
    • 为子进程设置流
    • 通过流与子进程通信(同步或异步)
    • 等待进程退出(同步或异步)
    • 终止进程
    损坏的功能

更新的库

  • Any:
    • 抑制了关于返回临时引用的错误警告
    • boost::addressof 现在被使用,而不是直接取地址 #12615
    • 头文件不再使用双引号包含 #12053
    • CI 测试现在使用 addressleakundefined sanitizers 运行
    • 添加了更多测试
  • Atomic:
    • 修复了在使用 gcc 4.7 之前版本和兼容编译器在 32 位 x86 上进行 64 位原子操作时可能出现的错误代码生成。
  • Config:
    • 添加了 BOOST_NO_CXX11_SFINAE_EXPR 缺陷检测。
  • Context:
    • 新 API:call/cc
    • 弃用的 API:execution-context
    • 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 sanitizers 运行
  • 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 sanitizers 运行
  • 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
      • explicit 修饰符已添加到 rtree index::dynamic_\* 参数的构造函数中
      • strategy::area::huiller 被 strategy::area::spherical 替换
    • 已解决的问题
      • 363 geometry/index/parameters.hpp 中缺少包含
      • 364 当参数使用不同的点类型时,within(Linear, Areal) 编译错误
      • 370 以 Ring 作为输入时缓冲区段错误
    • 已解决的票据
      • 11899 boost::geometry::equals 不处理开放多边形
      • 11930 area::huiller 策略的不准确性
      • 11931 极点环绕多边形的错误球面面积
      • 12410 correct() 中缺少对地理坐标系的支持
      • 12566 当 pair 值包含原始指针时,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 sanitizers 运行
  • Math:
    • 大力推动确保 C99 中的所有函数也与 Annex F 兼容。
    • 提高了 Bessel 函数 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 Annex 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
  • Smart Pointers:
    • 重写了数组的 allocate_sharedmake_shared,以实现更优化和更易于维护的实现 (Glen Fernandes)
    • 具有移动语义的指针转换函数 (Chris Glover)
  • Test:
    • Boost.test v3.5,有关更多详细信息,请参见 变更日志 部分。
    • 新功能
      • 现在 Boost.Test 为记录用户定义的类型提供了 自定义点
      • JUnit 输出格式现在可以具有 log-level
      • 当测试模块有大量检查时,JUnit 输出格式的性能并没有提高
    • 错误修复
  • TypeIndex:
    • 添加了 BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST,它实现了 runtime_cast 的功能,但不包括 BOOST_TYPE_INDEX_REGISTER_CLASS 宏(感谢 Chris Glover 的实现)
    • 修复了 stl_type_index.hpp 中未定义的宏警告 #12739
    • CI 测试现在使用 addressleakundefined sanitizers 运行
  • 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 sanitizers 运行

测试的编译器

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 管理了此版本。