版本 1.72.0
版本 1.72.0
2019年12月11日 18:06 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_72_0.tar.bz2 | 59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722 |
boost_1_72_0.tar.gz | c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f | |
windows | boost_1_72_0.7z | 247a91dd7e4d9dd3c4b954b532fbc167ba62dc15ab834e5ad893d7c3f9eb5f0f |
boost_1_72_0.zip | 8c20440aaba21dd963c0f7149517445f50c62ce4eb689df2b5544cc89e6e621e |
更新的库
-
Asio:
-
更改了
async_initiate
辅助函数,以便为 C++11 或更高版本自动推断其返回类型。 -
更改了所有异步操作,以便为 C++14 或更高版本使用自动推断的返回类型。
-
引入了概念以支持
async_initiate
。 -
为所有 I/O 对象类型添加了嵌套模板类型
rebind_executor
。 -
更改了启动函数对象,以通过嵌套类型
executor_type
和成员函数get_executor()
报告其关联的 I/O 执行器。 -
添加了
default_completion_token
特征,为 I/O 执行器类型提供了关联的默认完成令牌类型,以用于异步操作。此特征专门用于use_awaitable
完成令牌,例如,允许异步操作按如下方式使用:co_await socket.async_connect(my_endpoint)
。 -
为 Windows 特定的 I/O 对象的异步操作添加了缺少的
async_initiate
。 -
确保执行器类型传播到新接受的套接字。
-
更改为要求
Protocol
复制和移动操作永远不会抛出异常。 -
更改为要求
Endpoint
默认构造函数和移动操作永远不会抛出异常。 -
为协议访问器添加了
noexcept
限定符。 -
为套接字移动构造函数添加了
noexcept
限定符。 -
修复了在 Windows 上打开串行端口相关的问题
-
使用正确的常量来初始化 RTS 控制标志。
-
指定默认波特率 (9600)。
-
-
修复了当异步 accept 操作自动重启时可能发生的丢失的“未完成工作计数”。
-
有关更多详细信息,请查阅修订历史。
-
-
Atomic:
-
为某些版本的 libstdc++ 未将
__float128
视为浮点类型添加了解决方法。 -
改进了与 clang-win 编译器的兼容性。
-
-
Beast:
-
这是一个维护更新,包含错误修复和使用 Boost.Asio 中交付的新功能的更新。
-
我们很想知道您或您的公司如何使用 Beast,请考虑在 Companies and Individuals Using Beast 列表中添加条目。
-
有关完整的更改列表,请参阅完整的发行说明。
-
-
Context:
-
支持 architecture s390x
-
删除了 execution_context
-
-
Endian:
-
在 GCC 和 Clang 上使
endian_reverse
、conditional_reverse
和*_to_*
成为constexpr
-
添加了便捷的加载和存储函数
-
添加了浮点便捷 typedef
-
添加了
data()
的非常量重载;将其返回类型更改为unsigned char*
-
在可用时为
endian_reverse
添加了__int128
支持 -
添加了便捷头文件
boost/endian.hpp
-
-
Filesystem:
-
将
filesystem_error
提取到exception.hpp
;将file_status
以及相关的枚举和函数提取到file_status.hpp
;将directory_entry
、directory_iterator
和recursive_directory_iterator
提取到directory.hpp
。 -
已弃用: 为了向后兼容,除非定义了
BOOST_FILESYSTEM_NO_DEPRECATED
宏,否则operations.hpp
仍然包含新的头文件exception.hpp
、file_status.hpp
和directory.hpp
。这些隐式包含被认为是已弃用的,将在未来的版本中删除。鼓励用户直接包含新的头文件或包含filesystem.hpp
。 -
filesystem_error
异常现在在 Boost.Filesystem 的编译库中实现。用户可能需要在他们的项目中添加与 Boost.Filesystem 库的链接。 -
在 POSIX.1-2008 平台上,使用
utimensat
而不是utime
。utime
在 POSIX.1-2008 中声明为已过时,并且可以禁用,例如在 uClibc-ng 中。(<PR#115>) -
directory_iterator
现在在内存分配错误时处于结束状态。 -
在 POSIX 系统上的
directory_iterator
中,readdir
/readdir_r
的支持已重新设计,以避免在使用readdir
时为dirent
结构分配内存。这减少了内存消耗,并消除了在readdir
生成非常长的目录名称的情况下缓冲区溢出的可能性。 -
在 Windows 上,使用 Boost.WinAPI 选择目标 Windows 版本。
-
新增: 添加了
directory_options
枚举,它反映了 C++20 中同名的枚举。directory_options
枚举在directory_iterator
和recursive_directory_iterator
中受支持,以自定义迭代行为。特别是,迭代器现在支持跳过由于权限不足而无法打开的目录。symlink_option
枚举现在已弃用,应替换为directory_options
。 -
默认情况下,
recursive_directory_iterator
现在在发生错误时重置为结束状态,这是 C++20 的要求。(<#112>) -
新增: 添加了
directory_options::pop_on_error
选项,它配置recursive_directory_iterator
,以便它尝试通过重复调用pop()
直到成功或达到结束状态来从迭代错误中恢复。(<#113>) -
新增: 添加了
directory_options::skip_dangling_symlinks
选项,它配置recursive_directory_iterator
,以便它不遵循悬空的目录符号链接,并继续迭代而不是报告错误。 -
已弃用:
recursive_directory_iterator
的以下成员现在标记为已弃用:level()
、no_push_pending()
、no_push_request()
、no_push()
。建议用户将其用法替换为标准对应项:depth()
、recursion_pending()
、disable_recursion_pending()
。请注意,recursion_pending()
与no_push_pending()
和no_push_request()
相比,具有相反的含义。弃用的方法将在未来的版本中删除。 -
修复了
path::lexically_relative
(以及任何相关的算法),以正确处理其参数中的空路径元素、点路径元素和点点路径元素。该行为更接近 C++17std::path::lexically_relative
,即忽略空路径元素和点路径元素,并通过减少要在生成的相对路径中生成的点点路径元素的数量来计算点点路径元素。(<#76>)
-
-
Functional/Factory:
-
Glen Fernandes 重写了
factory
和value_factory
的实现,以提供以下功能-
在可能的情况下支持右值参数
-
在可能的情况下通过可变参数模板支持任意数量的参数
-
支持最终分配器
-
支持使用花哨指针的分配器
-
支持禁用的异常 (
BOOST_NO_EXCEPTIONS
) -
改进了编译时间
-
-
以下功能已被删除
-
通过
BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY
增加 C++03 编译器的限制 -
通过
BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T
使用boost::none_t
代替void
-
-
-
GIL:
-
新增
-
GSoC 2019: 用于图像缩小的 Lanczos 重采样 (<PR#309)。
-
GSoC 2019: 二值化阈值处理、反向二值化阈值处理和截断阈值处理的方法 (<PR#313)。
-
GSoC 2019: Otsu 阈值处理方法 (<PR#314)。
-
GSoC 2019: 使用邻域区域的均值或高斯加权和的自适应阈值处理 (<PR#315)。
-
GSoC 2019: Harris 响应计算(没有非最大值滤波的角点检测器) (<PR#350)。
-
GSoC 2019: Hessian 角点检测器 (<PR#364)。
-
GSoC 2019: 2D 卷积的实现,作为新函数
convolve_2d
(<PR#367)。 -
GSoC 2019: 使用平均滤波器的盒式滤波 (<PR#383)。
-
GSoC 2019: 基于归一化均值滤波器的模糊函数 (<PR#383)。
-
GSoC 2019: Sobel 和 Scharr 算子 (<PR#392)。
-
GSoC 2019: 用于去除图像噪声的中值滤波器 (<PR#393)。
-
继续添加新的测试用例,并显着提高了总体测试覆盖率。
-
记录了
cached_location_t
的用途 (<PR#287)。 -
Numeric 扩展中的函数
extend_boundary
,用于执行图像边界扩展 (<PR#386)。 -
项目发行说明维护在 Markdown 文件
RELEASES.md
中 (<PR#404)。
-
-
更改
-
将所有测试、核心功能和扩展移动到
test/
目录中 (<PR#302)。
-
-
-
Log:
-
改进了与 clang-win 编译器的兼容性。
-
-
MPI:
-
文档澄清。
-
修复了使用显式输入缓冲区偏移量时的 scatterv 错误。
-
启用将 MPI_Probe 及其友元与 Intel MPI >= 2019.4 一起使用
-
Windows 上的符号可见性
-
-
Math:
-
添加了超几何函数 1F0、0F1、2F0、1F1 和 pFq。
-
添加了 Jacobi 多项式(及其导数)评估。
-
添加了 Gegenbauer 多项式(及其导数)评估。
-
添加了 Cardinal B 样条(及其导数),作为其自身的多项式函数。
-
添加了 Cardinal 三角插值。
-
添加了新的统计子部分。
-
添加了单样本 Student's T 检验。
-
添加了用于正态性检验的 Anderson Darling 检验。
-
添加了用于自相关的 Ljung Box 检验。
-
添加了用于随机序列的 Runs 检验。
-
头文件
boost/math/tools/univariate_statistics.hpp
和boost/math/tools/bivariate_statistics.hpp
已弃用,建议使用boost/math/statistics/univariate_statistics.hpp
和boost/math/statistics/bivariate_statistics.hpp
。 -
添加了经验 CDF 分布。
-
重做了多精度 gamma 函数使用的 Sterling 近似,使其适用于所有使用 Lanczos 近似的常规精度函数。还将 Lanczos 近似扩展到高达 100 位十进制数字精度。
-
-
Multiprecision:
-
Big
constexpr
更新允许 cpp_int 和 float128 算术在 gcc 和 clang 9 或更高版本,或任何支持std::is_constant_evaluated()
的编译器上完全为constexpr
。 -
修复了可变精度 mpf_float 中的一个错误,该错误导致它陷入试图选择正确精度的困境 - 请参阅 https://github.com/boostorg/multiprecision/issues/164。
-
-
Outcome:
-
增强功能
-
独立 outcome 现在可以
make install
安装,并且 cmakefind_package()
可以找到它。请注意,您必须单独安装和find_package()
Outcome 的依赖项 quickcpplib,否则 Outcome 的find_package()
将失败。 -
独立 Outcome 用于指定依赖库的 git 子模块机制已被 cmake 超级构建依赖项机制取代。在 cmake 配置时,quickcpplib 的内部副本将被 git 克隆、构建并安装到构建目录中,内部
find_package()
从那里使用它。这打破了将未配置的 Outcome 仓库用作 Outcome 实现的用法,现在必须执行以下操作之一:1. 将 Outcome 作为子目录添加到 cmake 构建中。2. 使用 cmake 超级构建(即ExternalProject_Add()
)构建 Outcome 并将其安装到本地安装中。3. 使用单头文件版本之一。 -
对于独立 Outcome,现在检查当前编译器是否会编译包含 C++ Concepts 的代码,如果会,则 Outcome 的所有 cmake 使用者都将启用 C++ Concepts。将 cmake 变量
CXX_CONCEPTS_FLAGS
设置为空字符串以防止自动检测和启用 C++ Concepts 支持。 -
OUTCOME_TRY
操作现在提示编译器操作将成功。P1886 错误速度基准测试 表明,通过提示编译器表达式是否预期成功,在非常小的函数中可以获得相当大的收益。OUTCOME_TRY
之前根本没有提示编译器,但现在它会提示。一组新的宏OUTCOME_TRY_FAILURE_LIKELY
提示编译器预期会失败。如果您希望返回到以前的未提示行为,请将OUTCOME_TRY_LIKELY(expr)
定义为(!!expr)
。 -
#199 添加了对 C++ 协程的支持。这分为两个部分,首先现在有一个
OUTCOME_CO_TRY()
操作,适用于从 C++ 协程中执行TRY
操作。其次,在头文件outcome/coroutine_support.hpp
中,有eager<OutcomeType>
和lazy<OutcomeType>
的实现,它们让您可以更自然和有效地从 C++ 协程中使用basic_result
或basic_outcome
-- 具体来说,如果结果或 outcome 将从异常指针构造,则协程中抛出的异常会返回一个带有抛出异常的错误或异常结果,而不是通过协程机制抛出异常(在当前的编译器中,这很可能使程序崩溃)。eager<T>
和lazy<T>
都可以接受任何T
。两者都经过了测试,并在 VS2019 和 clang 9 上发现可以工作。 -
#210
make_error_code()
和make_exception_ptr()
现在也考虑用于basic_result<>
的兼容复制和移动转换。这允许您将basic_result<T, E>
构造为basic_result<T, error_code>
,其中E
是一种自定义类型,它实现了 ADL 发现的自由函数error_code make_error_code(E)
,但在其他方面与error_code
无关。对于exception_ptr
,相同的可用性适用于make_exception_ptr()
作为 ADL 发现的自由函数。为了减少构造函数计数,basic_outcome<>
对此的支持比basic_result<>
少,但它将通过此机制接受来自basic_result<>
和failure_type<>
的转换。
-
-
错误修复
-
#184 编译器中对
[[nodiscard]]
支持的检测非常轻微地损坏了。
-
-
-
PolyCollection:
-
维护工作。
-
-
Preprocessor:
-
添加了讨论空主题
-
支持 C++20
__VA_OPT__
构造-
BOOST_PP_VARIADIC_HAS_OPT
在 C++20 级别是否支持__VA_OPT__
-
BOOST_PP_CHECK_EMPTY
在 C++20 级别使用__VA_OPT__
测试空 -
BOOST_PP_VA_OPT
在 C++20 级别更灵活的__VA_OPT__
替代方案
-
-
-
Smart Pointers:
-
为标量和数组实现了
allocate_unique
。(Glen Fernandes)
-
-
VMD:
-
BOOST_VMD_IS_EMPTY
更新为在 C++20 级别使用__VA_OPT__
具有 100% 的可靠性
-
已测试的编译器
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, 7.0.0, 8.0.0
-
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, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
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, 7.0.0, 8.0.0
-
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, 8.0.0
-
Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
-
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
-
致谢
Marshall Clow 和 Michael Caisse 管理了此版本。