版本 1.47.0
版本 1.47.0
2011 年 7 月 11 日 22:19 GMT
平台 | 文件 |
---|---|
unix | boost_1_47_0.tar.bz2 |
boost_1_47_0.tar.gz | |
windows | boost_1_47_0.7z |
boost_1_47_0.zip |
新库
更新的库
-
累加器:
-
新的统计累加器:
sum_kahan
、sum_of_weights_kahan
、sum_of_variates_kahan
。
-
-
Dynamic Bitset:
-
修复了错误 #5439
-
-
Foreach:
-
在支持的编译器上使用右值引用进行常量右值检测。
-
-
Graph:
-
错误修复。
-
删除已弃用的函数
kolmogorov_max_flow
,请改用boykov_kolmogorov_max_flow
。 -
删除
<boost/graph/detail/is_same.hpp>
头文件,因为它的功能在 Boost.Type_Traits 中。
-
-
Math:
-
将 changesign 函数添加到 sign.hpp 中,以方便添加非有限方面。
-
添加了来自 Johan Rade 的非有限方面,并带有测试、C99 格式的无穷大和 NaN 的使用示例以及文档。
-
添加了来自 Johan Rade 的 changesign 的测试和文档。
-
-
Meta State Machine:
-
在后端添加了一个
stop()
方法。 -
添加了对eUML 中的 Boost.Phoenix 仿函数的部分支持。
-
添加了选择状态切换发生的时间的可能性。
-
-
MultiIndex:
-
修复了与 Boost.Ref 相关的
composite_key_compare
中的 ADL 问题。 -
维护修复。
-
-
Proto:
-
预先预处理以获得更好的编译时间。
-
提高了默认预处理器限制
-
最大表达式元数(
BOOST_PROTO_MAX_ARITY
)从 5 增加到 10。 -
最大函数调用元数(
BOOST_PROTO_MAX_FUNCTION_CALL_ARITY
)从 5 增加到 10。 -
最大逻辑运算符元数(
BOOST_PROTO_MAX_LOGICAL_ARITY
)从 8 增加到 10。
-
-
更好地集成了
proto::basic_expr
,以避免意外地不必要地实例化proto::expr
。
-
-
Random:
-
与新标准同步。
-
添加了许多新的分布:
chi_squared_distribution
、negative_binomial_distribution
、fisher_f_distribution
、student_t_distribution
、weibull_distribution
、extreme_value_distribution
、discrete_distribution
、piecewise_constant_distribution
、piecewise_liear_distribution
-
将
uniform_int
和uniform_real
重命名为uniform_int_distribution
和uniform_real_distribution
。 -
向所有分布添加了成员:
param_type
、param
、流运算符、比较运算符、min
和max
。 -
允许直接将分布与生成器一起使用,而无需使用
variate_generator
。 -
更改了
geometric_distribution
和lognormal_distribution
参数的含义。 -
向
gamma_distribution
添加了第二个参数。 -
添加了
seed_seq
,并添加了相应的构造函数和生成器的seed
重载。 -
添加了
generate_canonical
。 -
重命名了引擎模板。例如,
mersenne_twister
变为mersenne_twister_engine
。 -
新的引擎适配器
independent_bits_engine
。 -
添加了新的预定义引擎 typedef:
mt19937_64
、ranlux[24|48][_base]
、knuth_b
。 -
更新了播种算法。
-
添加了
discard
-
在所有预定义的引擎中使用无符号类型代替有符号类型。
-
-
错误修复
-
linear_congruential_engine
可能会断言,因为模块化算术并未在所有情况下实现。现在称为shuffle_order_engine
的shuffle_output
可能会导致整数溢出。这些情况未被任何预定义的引擎触发。 -
uniform_small_int
现在实际上按文档中的说明工作。
-
-
binomial_distribution
和poisson_distribution
的新高效算法。 -
将所有功能移动到
namespace boost::random
-
向后兼容性问题
-
播种算法已更改。为了与标准兼容,这是不可避免的。更不用说一些现有的算法很奇怪且不一致。
-
使用整数播种:对于大多数生成器,行为应该保持不变,除了
lagged_fibonacci
和subtract_with_carry
(因此ranlux
)。 -
使用另一个生成器为生成器设定种子: 这项功能是通过将所有生成器都设为
SeedSeq
的模型来实现的。 因此,如果使用非 Boost.Random 生成器为 Boost.Random 生成器设定种子,您的代码将不再编译。算法已更改,因此使用此设定种子方法的代码将产生不同的值。 -
从迭代器对为生成器设定种子: 在某些地方,这隐式地假设元素是 32 位整数,但并非所有地方都是如此。 我已在所有地方添加此要求,并相应地更新了算法。
value_type
不超过 32 位的生成器的行为应保持不变。
-
-
重命名
-
每当一个类被重命名时,都有一个带有旧名称的包装器。 命名空间 boost 中也为所有移动的内容使用了 using 声明。
-
分布中的一些访问器的名称已更改。 允许使用旧名称和新名称。
-
-
geometric_distribution
和lognormal_distribution
: 运行时行为有所不同。boost::geometric_distribution
和boost::lognormal_distribution
提供旧的行为,boost::random::geometric_distribution
和boost::random::lognormal_distribution
提供新的行为。 -
流: gamma_distribution 有一个新的参数,因此用旧版本保存的文本将无法被新版本读取。
-
variate_generator
现在是一个简单的直通包装器。 假设它会调整生成器的结果类型以匹配分布的代码将不再起作用。 这不是 Boost.Random 提供的任何分布的问题。 -
返回类型: 一些生成器的
result_types
略有变化。 一些有符号类型已更改为无符号类型以匹配标准。 -
has_fixed_range
: 现在始终为 false,因为它似乎不是很有用且过于繁琐。 任何在未首先检查has_fixed_range
的情况下访问const_min
和const_max
的行为从一开始就是不正确的。
-
-
构建系统
-
Boost.Build 可执行文件的官方名称已更改为
b2
。 引导脚本创建了一个具有旧名称bjam
的副本,以防止第三方构建脚本失败。
更新的工具
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
LLVM Clang 2.8
-
GCC:3.4.6、4.2.4、4.3.4、4.3.5、4.4.1、4.4.3、4.4.5、4.5.1、4.5.2、4.6.0、4.6.1
-
GCC,C++0x 模式:4.3.4、4.4.3、4.5.2
-
Intel 12.0
-
-
OS X
-
Apple Clang 2.1
-
Intel 11.1
-
GCC:4.2.1、4.4.4
-
GCC,C++0x 模式:4.4.4
-
-
Windows
-
Visual C++ 7.1、9.0、10.0
-
GCC,mingw:4.4.0
-
-
FreeBSD
-
GCC 4.2.1,64 位
-
-
QNX
-
QCC
-
Boost 的其他测试编译器包括
-
Linux
-
来自 subversion 的 Clang,带有 GNU libstdc++。
-
LLVM Clang 2.8
-
GCC:3.4.6、4.2.4、4.3.4、4.3.5、4.4.3、4.4.5、4.5.1、4.5.2、4.6.0、4.6.1
-
GCC,C++0x 模式:4.3.4、4.4.3、4.5.2
-
pgCC:11.2
-
Intel:10.1、11.0、11.1、12.0
-
PathScale:3.2
-
-
OS X
-
来自 subversion 的 Clang,带有 GNU libstdc++。
-
Intel 11.1
-
GCC:4.4.4
-
GCC,C++0x 模式:4.4.4
-
-
Windows
-
Visual C++ 7.1、9.0、10.0
-
带有 STLport 的 Visual C++:9.0
-
带有 STLport 的 Visual C++,Windows Mobile 5:9.0
-
GCC,mingw:4.5.2
-
GCC,C++0x 模式,mingw:4.5.2
-
-
AIX
-
IBM XL C/C++ Enterprise Edition,V11.1.0.0
-
致谢
Beman Dawes、Eric Niebler、Rene Rivera、Daniel James 和 Vladimir Prus 管理了此版本。