这是 Boost 的一个旧版本,发布于 2016 年。 当前版本是 1.89.0。
版本 1.62.0
2016年9月28日 15:17 GMT
文档
第三方下载
新库
- Fiber:
- Oliver Kowalke 提供的用于用户空间线程/协程的框架。
- QVM:
- Boost 是一个通用的库,用于处理具有静态大小的四元数、向量和矩阵,重点在于图形、视频游戏和模拟应用程序所需的二维、三维和四维操作,由 Emil Dotchevski 提供。
更新的库
-
Atomic:
- 改进了对 Oracle Studio 和 SPARC 的支持。该库现在在 SPARCv8+ 上提供本地原子操作。
-
Chrono:
-
#11330 boost::chrono::duration 默认构造函数未初始化 rep_
-
#11618 Chrono IO V2 文档 ios_state.hpp 不存在
-
#11631 Chrono io v2 不允许支持自定义时钟
-
Circular Buffer:
- 调试模式下默认不再使用调试实现。调试实现没有与普通(发布)实现或其他容器相同的线程安全保证。因此,`BOOST_CB_DISABLE_DEBUG` 宏不再使用。现在应该定义 `BOOST_CB_ENABLE_DEBUG=1` 来启用调试支持。(#6277)
-
Container:
- 修复的错误
- 修改了所有容器中默认构造函数和移动构造函数的 noexcept 表达式。
- 为 `map` 和 `flat_map` 实现了 C++17 的 `insert_or_assign` / `try_emplace`。
- 为 `map`、`multimap`、`set`、`multiset` 实现了 C++17 的 `extract` / `insert(node)`。
-
Context:
-
#12215 在 Windows 上使用默认 fixedsize_stack 时所有堆栈都已损坏
-
#12242 Intel C++ 编译器在 MacOS 上的构建问题
- 修复了 execution_context_v1 的堆栈展开
-
Coroutine:
-
Coroutine2:
-
#12221 coroutine<>::push_type 函数启动时未推送
- 不要吞掉在 coroutine<>::push_type 构造时抛出的异常
-
DLL:
-
Functional/Forward:
-
几何:
-
改进
- Union:确保输出有效(除了一些例外情况),包括自相切的多边形或共享边。
- SVG:支持 boost::variant 几何图形
- SVG:坐标现在以双精度(默认)写入 SVG。
- 重命名命名空间 concept 为 concepts,以避免与最新编译器发生冲突
- 在球面和地理几何图形的关系和集合运算中使用了新的球面相交策略(以前对所有坐标系都使用笛卡尔相交策略)。
-
已解决的工单
-
#12189 当输入的点类型不同时,关系运算无法编译
-
#12287 rtree.query() 对 contains() 谓词的结果无效
-
Interprocess:
-
Intrusive:
-
Lexical Cast:
-
Log:
- 新功能
- 添加了用于在本地机器上进行进程间日志记录的新工具。该实现包括一个资源名称包装器、一个进程间消息队列和一个接收器后端。
- 添加了一个新的字符装饰器 `max_size_decor`。新装饰器允许将其所附带的格式化器的输出限制在指定长度内。
- 错误修复
- 修复了日志流在不同日志记录之间保留格式设置的问题。(#12178)
- 有关更多详细信息,请参阅 更改日志。
-
数学:
- 新功能
- 启用所有特殊函数代码,使其能够正确处理精度可能在运行时发生变化的类型:例如,Boost.Multiprecision 中的 `mpfr_float` 类型。
- 补丁
- 修复了 `tgamma_delta_ratio` 在 delta 相对于基数很小的情况。
- 修复了杂项 GCC-4.4 测试失败。
-
Optional:
-
Phoenix:
-
Regex:
- 修复了在解析某些无效正则表达式时发生的缓冲区溢出错误,请参见 #12222。
- 修复了库构建中 ICU 的检测,请参见 #12152。
- 修复了 in 敏感度更改中的 bug,请参见 #11940。
- 允许使用比 int 更宽的类型在
\x{}
表达式中(例如 char32_t 等),请参见 #11988。
-
Test:
- Boost.test v3.3,更多详情请参阅 更改日志。
- 新功能
- 数据集驱动的测试用例现在拥有唯一的名称,并且数据集的所有示例测试都位于同一个测试套件内。
- Boost.test 新增了一个命令行开关 `--logger`,用于在一行命令中设置测试记录器及其参数。
- Boost.test 现在可以同时拥有多个记录器,每个记录器都有自己的日志级别和输出流。
- Boost.test 新增了一个 JUNIT 记录器,能够输出与 Junit/xUnit 兼容的流。
- 现在可以通过环境变量 `BOOST_TEST_RUN_FILTERS` 指定多个测试过滤器。
- 错误修复
- Trac 工单 #8707, #8834, #11128, #11845, #11859, #12024,
- Trac 工单 #12093, #12103, #12224, #12241, #12257, #12378
- Pull request PR81
-
Thread:
-
#12102 当 BOOST_THREAD_PROVIDES_INTERRUPTIONS 被禁用时,condition_variable_fwd.hpp 编译失败
-
#12120 thread/barrier.hpp 的性能改进
-
#12146 make_exceptional_future 未在文档中提及
-
#12202 shared_lock 应在 shared_mutex 头文件中
-
#12371 boost thread/future.hpp 构建失败
- #88 修复 boost::upgrade_lock 中的拼写错误
- #89 修复 upgrade_to_unique_lock<>::operator=() 中的 bug
- #90 修复 try_lock_wrapper<>::operator=() 中的 bug
- #91 将 shared_lock_guard 添加到包含的锁类型中
- #92 修复了 MSVC-8 的编译。
- #93 修复了 Clang 中的变量遮蔽警告
- #94 修复了 boost::barrier 中的 bug
- #95 修复了 boost::completion_latch 中的一个错误
- #96 将 async_func.hpp 重命名为 invoker.hpp。
- #97 修复了 sync_timed_queue<>::pull_until() 中的一个错误
-
TypeIndex:
-
ctti_type_index
在 C++14 中被设为 constexpr。现在可以在编译时以 const char*
的形式获取类型的实际名称。因此,我们可以在 **编译时** 做很多有趣的事情:检查类型的命名空间、根据类型的词法表示对类型进行排序、检查类型是否为模板类型等等。提供了一些示例。
- 修复了 MSVC 中类型名称的 `noexcept` 问题以及类型名称中空格的问题(从 klemens-morgenstern/develop 拉取)
- 修复了拼写错误 pull-request 7
- 改进了 CI 测试
-
Unordered:
- 移除了对已弃用的 `boost::iterator` 的使用。
- 修复了 `unordered_multiset` 和 `unordered_multimap` 赋值中的异常安全问题。
- 更多详情请参阅 更改日志。
-
Variant:
- 修复了从派生自 variant 的类构造 variant 的问题 #7120, #10278, #12155
- Variant 的构造函数和赋值运算符现在不会参与重载解析,如果 variant 无法容纳输入类型 #5871, #11602
- 修复了 C++11 中的隐式转换运算符问题 #8555
- 修复了当 variant 持有非 const 引用时的比较问题 #11751
- 修复了 variant 的移动赋值的 noexcept 问题 #11696
- 修复了包含中的双引号问题 #12057
- 删除了 BOOST_VARIANT_NO_REFERENCE_SUPPORT 宏,并停止支持没有 SFINAE 的编译器 #12250
- 抑制了 MPL end 迭代器的隐式实例化
- 多次小修复(拼写错误,缺失包含文件)
测试的编译器
Boost 的主要测试编译器是:
- Linux
- Clang: 3.0, 3.8.0
- Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8.0
- Clang, C++14: 3.5, 3.6, 3.7, 3.8.0, 3.8.1, 3.9.0
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 5.2.0, 6.1.1
- GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
- GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1
- Intel: 16.0
- Intel, C++11: 16.0
- Intel, C++14: 16.0
- 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: 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.1
- FreeBSD
- Clang: 3.4.1, 3.7
- GCC: 4.8.5, 5.4.0, 6.1.1
- QNX
- SunOS
- Oracle Solaris Studio: 12.5
- Oracle Solaris Studio, C++11: 12.5
Boost 的其他测试编译器包括:
- Linux
- Clang: 3.0, 3.8
- Clang, c++11: 3.0, 3.1, 3.2, 3.3, 3.4, 3.8
- Clang, c++14: 3.5, 3.6, 3.7, 3.8, 3.9
- GCC: 4.4.7, 4.5.3, 4.6.3, 4.7.2, 4.8.4, 5.2.0, 6.1.1
- GCC, C++11: 4.4.7, 4.7.2, 4.7.3, 4.8.5, 4.9.3, 5.2.0, 6.1.1
- GCC, C++14: 5.2.0, 5.3.0, 5.4.1, 6.1.1, 7.0.0 (experimental)
- Intel: 16.0
- Intel, C++11: 16.0
- Intel, C++14: 16.0
- OS X
- Apple Clang: 7.3.0
- G++: 6.1.0
- Windows
- Clang: 3.8.1
- 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
- GCC, cygwin: 5.4.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.1
- FreeBSD
- Clang, C++11: 3.4.1, 3.7.0
- GCC, C++11: 4.8.5. 5.4.0, 6.1.1
- Haiku
- QNX
- 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 管理了此次发布。