版本 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 |
新库
更新的库
-
Accumulators:
-
新的统计累加器:
sum_kahan
、sum_of_weights_kahan
、sum_of_variates_kahan
。
-
-
Dynamic Bitset:
-
修复了错误 #5439
-
-
Foreach:
-
在支持的编译器上使用右值引用进行 const 右值检测。
-
-
Graph:
-
错误修复。
-
删除已弃用的函数
kolmogorov_max_flow
,请改用boykov_kolmogorov_max_flow
。 -
删除了
<boost/graph/detail/is_same.hpp>
头文件,因为其功能已在 Boost.Type_Traits 中。
-
-
Math:
-
在 sign.hpp 中添加了 changesign 函数,以方便添加非有限方面。
-
从 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_output
(现在称为shuffle_order_engine
)可能会导致整数溢出。这些情况未被任何预定义引擎触发。 -
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
的代码从一开始就是不正确的。
-
-
Build System
-
Boost.Build 可执行文件的官方名称已更改为
b2
。引导脚本创建了一个旧名称bjam
的副本,以防止第三方构建脚本失败。
Updated Tools
Compilers Tested
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
-
Visual C++ with STLport: 9.0
-
Visual C++, Windows Mobile 5, with STLport: 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
-
Acknowledgements
Beman Dawes、Eric Niebler、Rene Rivera、Daniel James 和 Vladimir Prus 管理了此版本。