版本 1.71.0
版本 1.71.0
2019 年 8 月 19 日 15:31 格林威治标准时间
平台 | 文件 | SHA256 哈希值 |
---|---|---|
Unix | boost_1_71_0.tar.bz2 | d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee |
boost_1_71_0.tar.gz | 96b34f7468f26a141f6020efb813f1a2f3dfb9797ecf76a7d7cbd843cc95f5bd | |
Windows | boost_1_71_0.7z | 1b3949ffddf56129141032542523920034f2e69775fb93332a52ba37c548dbf35 |
boost_1_71_0.zip | 85a94ac71c28e59cf97a96714e4c58a18550c227ac8b0388c260d6c717e47a69 |
新增库
-
Variant2: 由 Peter Dimov 提供的永不为空值、强保证实现的
std::variant
。
更新的库
-
Align:
-
在
align_up
和align_down
的整型版本中支持任何整型。 -
修改了
aligned_allocator
的实现,不再需要void
的专门化。 -
在
aligned_allocator
中定义propagate_on_container_move_assignment
和is_always_equal
。
-
-
Asio:
-
通过消除完成处理程序分派时的冗余移动构造,略微提高了性能。
-
通过在自由函数
connect()
实现中添加注释来消除一个编译器警告(case贯穿)。 -
修复了针对用户定义序列类型的
is_*_buffer_sequence
检测特性。 -
修复了在获取
CancelIoEx
入口点时,关于不兼容指针转换的一些 Windows 特定的警告。 -
更改为在 Windows 上打开串行端口时自动设置默认值。
-
将串行端口
get_option()
成员函数更改为常量。 -
修复了 WinRT 面向流的套接字后端
shutdown
函数的名称隐藏问题。 -
对
is_dynamic_buffer
的文档进行了细微的修复。 -
添加了一些对 Haiku 操作系统的支持。
-
添加了 wolfSSL 兼容性。
-
更改为需要 C++17 或更高版本才能使用 clang 进行协程 TS 支持。
-
修复了教程中的 Doxygen 生成问题。
-
确保示例程序正确地包含在文档中。
-
-
Any:
-
现在可以对默认构造的
boost::any
进行静态初始化。 -
修复了在没有移动语义的编译器上赋值操作的性能回归。
-
维护工作。
-
-
Beast:
-
此版本主要包含错误修复和性能改进。
-
为分隔编译模式进行了大量工作,以减少定义
BOOST_BEAST_SEPARATE_COMPILATION
时的编译时间。 -
我们很想知道您或您的公司如何使用 Beast,请考虑向使用 Beast 的公司和个人列表中添加一项。
-
查看完整的发行说明以获取完整的更改列表。
-
-
循环缓冲区:
-
更正 Doxygen 生成的引用,不再显示内部成员。(Glen Fernandes)
-
消除了
add
和sub
上的 ubsan 警告。(Glen Fernandes) -
修复了
is_uninitialized
中的不正确检查。(Niklas Fejes)
-
-
容器:
-
修复了错误
-
deque
现在可以使用deque_options
设置选项。可以指定块大小/字节数。 -
static_vector
现在可以使用static_vector_options
设置选项。可以指定对齐方式和抛出行为。 -
small_vector
现在可以使用small_vector_options
设置选项。可以指定对齐方式和增长因子。
-
-
转换:
-
维护工作。
-
-
核心:
-
在
<boost/core/alloc_construct.hpp>
中添加了函数alloc_construct
、alloc_construct_n
、alloc_destroy
和alloc_destroy_n
,用于支持分配器感知和异常安全的对象和数组构造和销毁。(Glen Fernandes) -
在
<boost/core/first_scalar.hpp>
中添加了 constexpr 函数first_scalar
,用于获取指向数组第一个标量元素的指针。给定类型为T*
的指针,它们返回类型为remove_all_extents_t<T>*
的指针。(Glen Fernandes) -
在
<boost/core/noinit_adaptor.hpp>
中添加了类模板noinit_adaptor
,它是一个分配器适配器,可以将任何分配器转换为一个分配器,其construct(ptr)
通过就地 new 执行默认初始化,其destroy(ptr)
直接调用value_type
析构函数。(Glen Fernandes) -
添加了类模板
default_allocator
在<boost/core/default_allocator.hpp>
中,它可以作为最小默认分配器,其接口类似于 C++20std::allocator
,支持禁用异常的配置,并且没有std
作为关联的命名空间。分配器使用operator new
和operator delete
进行分配。(Glen Fernandes) -
在
<boost/core/uncaught_exceptions.hpp>
头文件中,添加了解决方案,以更好地与使用 libc++/libc++abi 库的 QNX SDP 7.0 兼容。(Andrey Semashev,#59) -
<boost/detail/sp_typeinfo.hpp>
头文件现在被标记为已弃用,并将在未来的版本中删除。应改用<boost/core/typeinfo.hpp>
。(Peter Dimov)
-
-
Endian:
-
阐明了对值类型模板参数的要求
-
添加了对
float
和double
的支持 -
添加了
endian_load
、endian_store
-
更新了
endian_reverse
以正确支持所有非bool
整型。 -
将已弃用的名称移动到已弃用的头文件
endian.hpp
-
-
Fiber:
-
更新了 shared_work 的文档
-
-
轻量级对象(Flyweight):
-
维护工作。
-
-
直方图(Histogram):
-
新特性
-
支持线程安全存储和新的线程安全累加器
-
支持无异常/RTTI编译(性能提升 10-20%)(与 Glen Fernandes 合作)
-
一维和二维直方图的性能改进
-
boost::histogram::indexed 现在返回正向迭代器范围,而不是输入迭代器范围
-
boost::histogram::indexed_range::accessor 现在不可复制,并充当单元格值的引用,使更多来自 C++ 标准库的算法能够工作
-
boost::histogram::algorithm::reduce 添加了新的切片选项和选项融合
-
boost::histogram::algorithm::project 接受静态直方图的运行时索引
-
-
错误修复
-
boost::histogram::algorithm::reduce 也适用于某些轴类型不支持约简的直方图
-
boost::histogram::axis::traits::update 现在可以正确处理 boost::histogram::axis::variant
-
-
其他
-
100% 测试覆盖率
-
减少了内部 Boost 依赖
-
改进的文档和示例
-
保证所有内置轴类型的无异常移动
-
在更高的警告级别下干净编译
-
-
查看 变更日志 获取更多详细信息。
-
-
日志(Log):
-
新特性
-
改进了对 C++17
std::string_view
在basic_formatting_ostream
中的支持。字符串视图现在可以参与输出时的字符代码转换。 -
添加了
auto_newline
格式化程序和流操纵器。它可以用于确保格式化输出始终以换行符结尾,同时避免重复换行符。 -
在输出流中,文本文件和文本多文件接收器后端添加了对配置换行符行为的支持,以配置是否为每个格式化的日志记录附加尾随换行符。使用后端构造函数的
auto_newline_mode
命名参数,或调用接收器后端的set_auto_newline_mode
方法。 -
注意:与之前的 Boost.Log 版本相比,接收器后端添加的尾随换行符的默认行为略有更改。后端现在只有在格式化的日志消息字符串中不存在换行符时,才会添加尾随换行符。在之前的版本中,换行符是无条件添加的。
-
在过滤器和格式化程序解析器中使用的默认过滤器和格式化程序工厂中,添加了对类型为
boost::log::trivial::severity_level
的严重性级别属性值的 支持。对于过滤器,支持仅限于名称为“Severity”的属性。
-
-
查看 变更日志 获取更多详细信息。
-
-
数学(Math):
-
新特性
-
Catmull-Rom 插值器现在可在 C++11 中使用
-
基数二次 B 样条插值
-
椭圆积分的定义域扩展
-
sin_pi 和 cos_pi 性能改进
-
前向模式自动微分
-
向量值重心有理插值
-
Ooura 方法用于计算傅里叶积分
-
-
错误修复
-
修复了与高精度(Multiprecision)库的多个兼容性问题
-
在罕见的架构上修复了 Lambert-W 函数
-
-
-
元解析(Metaparse):
-
新特性
-
在 C++11 中,以下内容支持可变参数模板:
sequence
、one_of_c
、one_of
、repeated_one_of
、repeated_one_of1
、one_char_except_c
、one_char_except
。
-
-
错误修复
-
BOOST_METAPARSE_STRING
不使用超出范围的字符值作为模板参数。 -
any_of_c<>
在 C++14 中不会创建空数组。
-
-
-
多维数组(Multi Array):
-
通过使用来自 Core 的新的
alloc_construct_n
和alloc_destroy_n
工具来简化分配器支持。(Glen Fernandes)
-
-
结果(Outcome):
-
增强功能
-
#184 根据 Boost 发布管理者的要求,将
version.hpp
和revision.hpp
重新定位到 detail 目录中,并在每个缺少许可证声明的源文件的顶部添加了 Boost 许可证声明(我认为)。还利用这个机会运行了许可证重新标记脚本遍历所有 Outcome,因此版权日期现在是最新的。 -
#185 添加 FAQ 条目解释问题 #185,以及为什么我们现在不会做任何事情来修复它。
-
#189 重构了
OUTCOME_TRY
实现,以使用更清晰的自定义点,能够接受非常不同的输入。删除了std::experimental::expected<T, E>
特化,因为这些不再需要。修复了先前声称它们是 ADL 发现的自定义点的文档,它们不是。添加了一个说明如何添加对外部输入类型支持的示例。 -
#183 特别为 Boost 添加了一个单独的
motivation/plug_error_code
。
-
-
错误修复
-
OUTCOME_VERSION_MINOR
未更新为 1。 -
#181 修复问题 #181,其中 Outcome 实际上并未实现强交换保证,尽管文档中说明了这一点。
-
#190 修复 Boost 版本中的问题 #190,其中单元测试套件无法从 Boost 发布发行版运行。
-
#182 修复问题 #182,其中
trait::is_exception_ptr_available<T>
始终为真,从而导致许多奇怪的问题,例如不打印诊断信息并尝试将所有内容提供给make_exception_ptr()
。 -
#192 修复问题 #192,其中
std::basic_outcome_failure_exception_from_error()
为组合了独立版和 Boost Outcome 的翻译单元定义了两次。
-
-
-
参数(Parameter):
-
升级了关键字生成宏
BOOST_PARAMETER_TEMPLATE_KEYWORD
(PR#15)。 -
将
boost::parameter::required
、boost::parameter::optional
和boost::parameter::deduced
元函数定义移动到boost/parameter目录中的自己的头文件中(PR#18)。 -
添加了对参数类别限定符“forward”、“consume”和“move_from”的支持(当前限定符为“in”、“out”和“in_out”)(PR#21)(PR#23),基于http://www.modernescpp.com/index.php/c-core-guidelines-how-to-pass-function-parameters。添加了新的使用方法语法
BOOST_PARAMETER_NAME((object-name), namespace-name) qualifier(tag-name))
和BOOST_PARAMETER_NAME(qualifier(name))
。(目前直接正确使用限定符以及BOOST_PARAMETER_FUNCTION
和其他代码生成宏的现有代码应该保持不变,因此没有重大更改。)更改用法的原因为能够将参数类别约束应用于通过参数组合调用的支持 Boost.Parameter 的函数和构造函数。(否则,目前可以使用参数组合绕过在BOOST_PARAMETER_FUNCTION
等中应用的参数类别约束。) -
添加了代码生成宏
BOOST_PARAMETER_BASIC_FUNCTION_CALL_OPERATOR
、BOOST_PARAMETER_BASIC_CONST_FUNCTION_CALL_OPERATOR
、BOOST_PARAMETER_NO_SPEC_FUNCTION
、BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION
、BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION
、BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR
、BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR
、BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR
和BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR
(PR#52)。 -
通过SFINAE改进了对参数相关返回类型的支持(PR#73)。
-
-
PtrContainer:
-
修复了在1.66.0中引入的ptr_vector回归问题(PR#24)。
-
-
PolyCollection:
-
维护工作。
-
-
SmartPtr:
-
为
weak_ptr
添加了别名构造函数。 -
添加了
weak_ptr<T>::empty()
。 -
添加了
enable_shared_from
、shared_from
和weak_from
。
-
-
Stacktrace:
-
修复了在C++98模式下使用线程消毒剂构建时,为默认构造的
frame
输出的name()
、source_location()
和source_line()
。 -
维护工作。
-
-
实用工具:
-
在
<boost/utility/ostream_string.hpp>
中实现了函数模板ostream_string
,以便最佳地将任何类型的字符串内容写入输出流。它满足[ostream.formatted.reqmts]的要求。(Glen Fernandes) -
优化了
basic_string_view
和basic_string_ref
的流输出运算符,以便直接写入rdbuf
流缓冲区。(Glen Fernandes)
-
-
YAP:
-
添加了一个示例,演示如何创建自评估YAP表达式(即,不需要显式调用
evaluate()
或transform()
的表达式)。
-
测试的编译器
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负责此版本的发布。