这是 Boost 的一个旧版本,发布于 2016 年。 当前版本是 1.89.0。
版本 1.61.0
2016年5月13日 02:58 GMT
文档
校验和列表,由 Vladimir Prus 签名
第三方下载
新库
- Compute:
- DLL:
- 一个用于便捷地使用动态共享库 (DSO) 的库。该库提供了一种跨平台的方式来:加载库,导入任何原生函数和变量,为 C++ 符号修饰后的函数和符号创建别名,查询库的节和导出的符号,自加载和自查询,通过导出的符号获取程序和模块的位置。
- Hana:
- 一个现代 C++ 元编程库。它提供了操作异构序列的高级算法,允许以自然语法编写类型级计算,提供了内省用户定义类型的工具等等。
- Metaparse:
- 一个用于在 C++ 编译过程中生成编译时解析器解析嵌入式 DSL 代码的库。该库与 Spirit 类似,但 Spirit 构建的解析器在运行时解析,而则在编译时解析。
更新的库
-
Any:
-
Container:
-
small_vector
支持更多构造函数和赋值操作。
- 修复的错误
-
Context:
-
#11246 因未定义符号在 mingw 上构建失败
-
#11365 使用 VS2015RC 构建时 execution_context.hpp 报错
-
#11652 检查 __cpp_lib_integer_sequence
-
#11946 在 x86_64/MinGW 上崩溃
- fcontext_t:不再是公共 API 的一部分
- 移除了对 WinFiber API 的支持
- execution_context:放宽至 C++11
- execution_context:类型安全的 T 数据传递
- execution_context:在栈顶执行函数
- execution_context:性能提升
- execution_context:移除了静态成员函数
current()
- execution_context:新的调用语义
-
Coroutine:
-
Coroutine2:
- 与 FPU 环境相关的属性已移除
- 性能提升
- 放宽至 C++11
-
Fusion:
-
几何:
-
附加功能
- 在球形和地理坐标系统中,支持 Box/Box 之间的 within 和 covered_by 操作。
-
改进
- Overlay: handle_tangencies 被 clusters 取代,修复了许多共线的转折点情况
-
已解决的工单
-
#9162 非笛卡尔 Point/Areal 的关系运算结果无效。
-
#10866 union_ 在 1.56 和 1.57 中不起作用。
-
#11018 几何相交结果错误
-
#11576 相交结果错误。
-
#11637 未使用的参数警告。
-
#11725 union_ 无法创建孔洞
-
#11789 球面赤道坐标系统的关系运算断言失败或结果无效。
-
#11917 Andoyer 距离策略对极点返回 0 (默认地理距离)。
-
#11928 Surveyor 面积策略的精度改进。
-
#11966 针对 box 和非整型坐标类型的 svg() 编译错误。
-
#11984 union_() 生成自相交多边形
-
#11987 rtree::remove() 对于地理坐标系无法编译。
-
#12000 relate 的 mask_handler (未使用) 构造函数中存在未初始化的引用。
-
#12106 对于非笛卡尔的极短线段,envelope() 出现无效断言失败。
-
错误修复
- 修复笛卡尔坐标系统中,当线段平行于 Box 的面时,Segment/Box 的 intersects 和 disjoint。
- 修复球形和地理坐标系统中,Point/Areal 在边缘情况下关系运算。
- 修复球形和地理坐标系统中,Point/Box 和 Box/Box 在某些情况下的 intersects 和 disjoint。
- 修复球形和地理坐标系统中,Point/Box 在某些情况下的 within 和 covered_by。
-
Interprocess:
-
Intrusive:
-
Lexical Cast:
- 修复了 Sun Studio 相关的 Issues
-
Log:
- 一般性更改
- 对
boost::basic_string_ref
及其特化的支持已被弃用;建议用户切换到 boost::basic_string_view
。对 boost::basic_string_ref
的支持将在未来版本中移除。
- 增加了对文件收集器目标目录中存储日志文件数量的限制支持。感谢 Erich Keane 提供的补丁。(#8746)
- 错误修复
- 修复了 Windows CE 的各种编译问题。
- 修复了 Solaris 上的编译问题。
- 添加了一个针对 MSVC-10 在某些情况下生成损坏代码的解决方法。(#12025)
- 有关更多详细信息,请参阅 更改日志。
-
数学:
-
Move:
- 实验性:渐进最优无缓冲合并和排序算法:adaptive_merge 和 adaptive_sort。
- 修复 bug
-
Multiprecision:
- 修复了整型输入的流读取 bug,参见 #11857。
- 修复了一些涉及表达式模板的歧义转换,参见 #11922。
- 添加了表达式模板感知的 min/max 重载,参见 #11149。
- 修复了 cpp_int 中右移负小整数的 bug,参见 #11999。
- 当可能时,在 cpp_int 的位移操作中使用 memmove,参见 #9233。
- 当可能时,在 cpp_int 中使用 memcpy 进行数据导入,参见 #9235。
- 将
cpp_bin_float.convert_to<double>()
改为函数模板,而不是通过 long double
进行转换,以避免双舍入错误,参见 #12039。
- 修复了从 NaN 和无穷大的转换,参见 #12112。
- 为 Clang on Windows 提供了更好的支持。
- 修复了 cpp_dec_float 和 cpp_bin_float 在基本算术运算中对 NaN 和无穷大的处理,参见 #12090。
- 修复了 cpp_bin_float 减法中的 fencepost 错误。
- 修复了 cpp_bin_float 转换到 float 例程中的双舍入错误,参见 #12039。
- 使 float128 能够感知非规格化数,参见 #12075。
- 允许在没有异常处理支持的情况下使用库和测试,参见 #12070。
- 修复了 boost::rational 的有 bug 的比较运算符重载。
- 为 Oracle C++ 添加了一些解决方法。
- 修复了当 cpp_int 的 limb_type 比 unsigned 更宽时,一些缺失的类型转换。
-
Optional:
- 现在
boost::optional
可以特化引用参数了。这解决了几个问题:
- 可选引用的
sizeof
是指针的 sizeof
,
- 一些与复制可选引用相关的 bug 已经消失,
- 在某些编译器上由不正确的引用绑定引起的所有运行时 bug 现在都变成了编译时错误,
- 您可以交换可选引用:这类似于交换指针:浅层交换,底层对象不受影响,
- 可选的抽象类型引用也可用。
- 文档化了嵌套的 typedef(Trac #5193)。
- 使完美转发构造函数对 SFINAE 友好,这解决了 Trac #12002。然而,这仅在新平台中有效,这些平台正确实现了 C++11 的
<type_traits>
。
- 修复了 Trac #10445。
-
Regex:
-
Test:
- Boost.test v3.2,请参见 '变更日志' 部分以获取详细信息。
- 新功能
- 基于数据集的测试用例学会了支持 fixtures 和可变数量的参数
- 基于数据集的测试用例样本类型现在尊重移动语义
- 错误修复
-
Variant:
测试的编译器
Boost 的主要测试编译器是:
- Linux
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
- Clang, C++14: 3.7.1, 3.8.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.4, 4.8.5, 4.9.3, 5.3.0
- GCC, C++11: 4.4.7
- GCC, C++14: 5.2.1, 5.3.1
- Intel: 16.0
- Windows
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1, 5.2
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android
- Clang: 3.6, 3.7
- GCC: 4.9, 5.3
- FreeBSD
- Clang: 3.4.1, 3.7
- GCC: 4.8.5, 5.3
- Haiku
- QNX
- SunOS
- Oracle Solaris Studio: 12.4, 12.5
- Oracle Solaris Studio, C++11: 12.5
Boost 的其他测试编译器包括:
- Linux
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.1
- Clang, c++14: 3.7.1, 3.8.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.3, 4.8.5, 4.9.3, 5.3.0, 5.3.1, 6.0.0
- GCC, C++11: 4.4.7
- GCC, C++14: 5.2.1
- Intel: 16.0
- OS X
- Apple Clang: 7.0.2
- G++: 5.3.0
- Windows
- GCC, C++03, mingw: 3.4.5
- GCC, C++11, mingw: 4.6.4, 4.7.3, 4.8.1
- GCC, C++14, mingw: 4.9.3, 5.1, 5.2
- GCC, cygwin: 5.3.0
- Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
- Android
- Clang: 3.6, 3.7
- GCC: 4.9, 5.3, 6.0
- FreeBSD
- Clang: 3.41, 3.7.0
- GCC, C++11: 4.8.5, 5.3.0, 6.0
- GCC: 6.0
- Haiku
- QNX
- SunOS
- Oracle Solaris Studio: 12.4, 12.5
- Oracle Solaris Studio, C++11: 12.5
致谢
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了此次发布。