版本 1.71.0
版本 1.71.0
2019 年 8 月 19 日 15:31 GMT
平台 | 文件 | SHA256 哈希值 |
---|---|---|
unix | boost_1_71_0.tar.bz2 | d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee |
boost_1_71_0.tar.gz | 96b34f7468f26a141f6020efb813f1a2f3dfb9797ecf76a7d7cbd843cc95f5bd | |
windows | boost_1_71_0.7z | 1b3949ffddf56129141032542523920034f2e69775fb9332a52ba37c548dbf35 |
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
检测特征。 -
修复了一些 Windows 特定的警告,这些警告是关于获取
CancelIoEx
入口点时的不兼容指针转换。 -
更改为在 Windows 上打开串行端口时自动设置默认值。
-
将串行端口
get_option()
成员函数更改为 const。 -
修复了 WinRT 面向流的套接字后端
shutdown
函数的名称隐藏问题。 -
对
is_dynamic_buffer
的文档应用了一个小修复。 -
增加了一些对 Haiku OS 的支持。
-
增加了 wolfSSL 兼容性。
-
更改为要求 C++17 或更高版本才能使用 clang 支持协程 TS。
-
修复了教程中的 doxygen 生成问题。
-
确保示例程序正确地合并到文档中。
-
-
Any:
-
现在可以静态初始化默认构造的
boost::any
。 -
修复了在没有移动语义的编译器上赋值时的性能下降。
-
维护工作。
-
-
Beast:
-
此版本主要由错误修复和性能改进组成。
-
大量工作包括用于拆分编译模式,以减少定义
BOOST_BEAST_SEPARATE_COMPILATION
时的编译时间。 -
我们很想知道您或您的公司如何使用 Beast,请考虑向 Companies and Individuals Using Beast 列表添加一项。
-
请参阅完整的 发行说明,以获取完整的更改列表。
-
-
Circular Buffer:
-
更正了 Doxygen 生成的引用,不再显示内部成员。(Glen Fernandes)
-
消除
add
和sub
上的 ubsan 警告。(Glen Fernandes) -
修复了
is_uninitialized
中的不正确检查。(Niklas Fejes)
-
-
Container:
-
已修复的错误
-
deque
现在可以使用选项,使用deque_options
。 可以指定块大小/字节。 -
static_vector
现在可以使用选项,使用static_vector_options
。 可以指定对齐和抛出行为。 -
small_vector
现在可以使用选项,使用small_vector_options
。 可以指定对齐和增长因子。
-
-
Conversion:
-
维护工作。
-
-
Core:
-
在
<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)
通过 placement new 执行默认初始化,并且其destroy(ptr)
直接调用value_type
析构函数。(Glen Fernandes) -
在
<boost/core/default_allocator.hpp>
中添加了类模板default_allocator
,它可以作为一个最小的默认分配器,其接口类似于 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 合作)
-
1D 和 2D 直方图的性能改进
-
boost::histogram::indexed 现在返回前向迭代器范围而不是输入迭代器范围
-
boost::histogram::indexed_range::accessor 现在不可复制,并且表现得像单元格值的引用,使得 C++ stdlib 中更多的算法可以工作
-
boost::histogram::algorithm::reduce 新增切片选项和选项融合
-
boost::histogram::algorithm::project 接受静态直方图的运行时索引
-
-
Bug 修复
-
boost::histogram::algorithm::reduce 也适用于某些轴类型不支持reduce的直方图
-
boost::histogram::axis::traits::update 现在可以正确地处理 boost::histogram::axis::variant
-
-
其他
-
100% 测试覆盖率
-
减少了内部 Boost 依赖
-
改进了文档和示例
-
保证所有内置轴类型的 no-throw moves
-
在更高的警告级别下干净地编译
-
-
查看 更新日志 获取更多详细信息。
-
-
Log:
-
新功能
-
改进了
basic_formatting_ostream
中对 C++17std::string_view
的支持。string view 现在可以参与输出时的字符代码转换。 -
添加了
auto_newline
格式化器和流操作符。它可以用来确保格式化输出总是以换行符结尾,同时避免重复的换行符。 -
在输出流、文本文件和文本多文件接收器后端中,添加了对配置行为的支持,以便在每个格式化的日志记录后附加一个尾随换行符。使用后端构造函数的
auto_newline_mode
命名参数,或者调用接收器后端上的set_auto_newline_mode
方法。 -
注意: 与之前的 Boost.Log 版本相比,接收器后端添加的尾随换行符的默认行为略有改变。现在,只有在格式化的日志消息字符串中没有换行符时,后端才会添加尾随换行符。在之前的版本中,会无条件地添加一个换行符。
-
添加了对在接收器构造函数和用于初始化接收器的便捷函数的
filter
和format
命名参数中传递任意函数对象的支持。例如,现在可以直接在这些参数中指定 C++11 lambda 函数。(#63) -
在过滤器和格式化器解析器中使用的默认过滤器和格式化器工厂中,添加了对
boost::log::trivial::severity_level
类型的严重级别属性值的支持。对于过滤器,该支持仅限于具有 "Severity" 名称的属性。
-
-
Bug 修复
-
查看 更新日志 获取更多详细信息。
-
-
Math:
-
新功能
-
Catmull-Rom 插值器现在可以在 C++11 中工作
-
Cardinal 二次 B 样条插值
-
椭圆积分的定义域扩展
-
sin_pi 和 cos_pi 性能改进
-
前向模式自动微分
-
向量值重心有理插值
-
Ooura 的 Fourier 积分评估方法
-
-
Bug 修复
-
修复了与 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
。
-
-
Bug 修复
-
BOOST_METAPARSE_STRING
不使用超出范围的字符值作为模板参数。 -
any_of_c<>
不会在 C++14 中创建空数组。
-
-
-
Multi Array:
-
通过使用 Core 中的新的
alloc_construct_n
和alloc_destroy_n
功能简化分配器支持。(Glen Fernandes)
-
-
Multi-index Containers:
-
为不同限定的成员函数添加了
const_mem_fun
和mem_fun
的变体 (issue #24)。
-
-
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
。
-
-
Bug 修复
-
OUTCOME_VERSION_MINOR
尚未更新为 1。 -
#181 修复问题 #181,其中 Outcome 实际上并未实现强交换保证,尽管文档中已声明如此。
-
#190 修复 Boost 版本中的问题 #190,其中无法从 Boost 发布发行版运行单元测试套件。
-
#182 修复问题 #182,其中
trait::is_exception_ptr_available<T>
始终为 true,从而导致许多奇怪现象,例如不打印诊断信息并尝试将所有内容提供给make_exception_ptr()
。 -
#192 修复问题 #192,其中对于将独立和 Boost Outcome 组合在一起的转换单元,
std::basic_outcome_failure_exception_from_error()
被定义了两次。
-
-
-
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()
的输出。 -
维护工作。
-
-
Utility:
-
在
<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 管理了此版本。