版本 1.34.0
版本 1.34.0
2007 年 5 月 12 日 12:00 GMT
平台 | 文件 |
---|---|
unix | boost_1_34_0.tar.bz2 |
boost_1_34_0.tar.gz | |
windows | boost_1_34_0.zip |
新库
-
Foreach 库: 用于轻松迭代序列元素的
BOOST_FOREACH
宏,来自 Eric Niebler。 -
Statechart 库: 可以用易于阅读和维护的 C++ 代码实现任意复杂的有限状态机,来自 Andreas Huber。
-
TR1 库: C++ 标准库扩展技术报告的实现,来自 John Maddock。此库本身不实现 TR1 组件,而是一个精简的包装器,它将包含您的标准库的 TR1 实现(如果有),否则它将包含 Boost 库等效项,并将它们导入到命名空间
std::tr1
中。亮点包括:引用包装器、智能指针、result_of、函数对象绑定器、多态函数包装器、类型特征、随机数生成器和分布、元组、固定大小数组、哈希函数对象、正则表达式和复数附加算法。 -
Typeof 库: Typeof 运算符模拟,来自 Arkadiy Vertleyb 和 Peder Holt。
-
Xpressive 库: 可以编写为字符串或表达式模板的正则表达式,并且可以相互递归引用,具有上下文无关文法的强大功能,来自 Eric Niebler。
更新的库
-
Date_time 库:
-
支持新的美国/加拿大时区规则和其他错误修复。有关详细信息,请参阅 更改历史。
-
-
Function 库: Boost.Function 现在实现了一个小缓冲区优化,当复制或构造存储小型函数对象的 Boost.Function 对象时,可以大大提高性能。例如,
bind(&X:foo, &x, _1, _2)
放置到 Boost.Function 对象中时,不需要堆分配。 -
Functional/Hash 库:
-
使用标准类的 use 声明,以便库不需要包含所有它们的头文件
-
已弃用<boost/functional/hash/*.hpp>头文件。
-
添加对
BOOST_HASH_NO_EXTENSIONS
宏的支持,该宏禁用对 TR1 的扩展 -
对浮点数的哈希函数进行小的改进。
-
-
Graph 库:
-
edmonds_maximum_cardinality_matching
,来自 Aaron Windsor。 -
lengauer_tarjan_dominator_tree
,来自 JongSoo Park。 -
compressed_sparse_row_graph
,来自印第安纳大学的 Jeremiah Willcock 和 Douglas Gregor。 -
sorted_erdos_renyi_iterator
,来自印第安纳大学的 Jeremiah Willcock。 -
biconnected_components
现在支持访问器和命名参数,来自 Janusz Piwowarski。 -
adjacency_matrix
现在模拟 双向图 概念。 -
dijkstra_shortest_paths
现在为每个顶点在初始化期间调用vis.initialize_vertex
。 -
注意: GraphViz reader 的编译库名称已更改为boost_graph(从bgl-viz)以符合 Boost 约定。
-
有关更多信息,请参阅 完整的修订历史。
-
-
MultiArray 库: Boost.MultiArray 现在默认情况下为
operator[]
提供范围检查。可以通过在包含multi_array.hpp之前定义宏BOOST_DISABLE_ASSERTS
来禁用范围检查。修复了与存储顺序相关的multi_array::resize()
中的错误。 -
Optional 库:
-
boost::none_t 和 boost::none
现在添加到 Optional 的文档中 -
关系运算符现在直接支持
'T'
和'none_t'
类型的参数 -
operator->() 现在也适用于引用类型。
-
添加了辅助函数
make_optional(val), make_optional(cond,val) 和 get_optional_value_or(opt,alternative_value)
。 -
添加了接受布尔条件(以及值)的构造函数。
-
添加了成员函数
get_value_or(alternative_value)
。 -
修复了与 mpl::apply<> 的不兼容性错误。
-
修复了与未初始化左值的转换赋值错误。
-
-
Pointer Container 库:
-
支持通过 Boost.Serialization 进行序列化。
-
可以通过在包含任何头文件之前定义宏 BOOST_PTR_CONTAINER_NO_EXCEPTIONS 来禁用异常。如果定义了 BOOST_NO_EXCEPTIONS,则默认定义此宏。
-
添加了额外的
std::auto_ptr<T>
重载,以便也可以将std::auto_ptr<T>
而不是仅T*
参数传递给成员函数。 -
transfer()
现在具有较弱的要求,以便可以将对象从ptr_container<Derived>
传输到ptr_container<Base>
,
-
-
Python 库:
-
Boost.Python 现在自动将 C++ 签名附加到文档字符串。新的 docstring_options.hpp 头文件可用于控制文档字符串的内容。
-
stl_input_iterator
,用于将 Python 可迭代对象转换为 STL 输入迭代器,来自 Eric Niebler。 -
添加了对
void*
转换的支持。 -
集成了对使用参数库构建的包装 C++ 函数的支持;关键字名称会自动为文档字符串所知。
-
增强了 API 以获得更好的嵌入支持 (
boost::python::import()
,boost::python::exec()
, 和boost::python::exec_file()
)。
-
-
Signals 库: Robert Zeh 对信号调用性能进行了更多改进。
-
Smart Pointers 库:
-
pointer_cast
和pointer_to_other
实用程序,以允许独立于指针的代码,来自 Ion Gaztanaga。
-
String Algorithm 库:
-
lexicographical_compare
-
join
-
新的比较谓词
is_less
,is_not_greater
。 -
各种算法中的负索引支持(如 Perl)(
*_head/tail
,*_nth
)。
-
-
Wave 库:
-
Wave 现在正确识别 C++ 标准规定的 pp-number 令牌,这些令牌在从库返回之前转换为 C++ 令牌。
-
添加了几个新的预处理钩子。有关完整说明,请参阅相关文档页面:上下文策略。
-
为生成的 Wave 库添加了共享库 (dll) 支持。
-
整体错误处理已得到改进。现在可以在发出错误或警告后恢复并继续。
-
添加了对生成的输出流中可选注释和/或完整空白保留的支持。
-
Wave 库现在执行自动包含保护检测,以避免多次访问头文件(如果适用)。
-
为 Wave 工具添加了完整的交互模式。现在 Wave 工具可以像 Python 或 Perl 一样使用,例如交互式地试用您的 BOOST_PP 宏。此外,现在可以加载和保存交互式会话的当前状态(宏表等)。
-
整体性能提高了高达 40-60%,具体取决于要处理的具体文件。
-
添加了对新编译指示的支持,允许从预处理源内部控制某些库功能(部分输出重定向、生成的空白控制和 #line 指令)。
-
添加了对 #pragma message "..." 的可选支持。
-
此版本还包括许多错误修复和使用改进。有关完整的更改列表,请参阅库 更改日志。
-
支持的编译器
Boost 在各种编译器和平台上进行了测试。由于 Boost 库依赖于并非所有编译器都提供的现代 C++ 功能,因此并非所有 Boost 库都适用于每个编译器。以下编译器和平台已经过 Boost 的广泛测试,尽管许多其他编译器和平台也可以正常工作。有关更多信息,请参阅 回归测试结果。
-
Apple GCC 4.0.1 在 Mac OS X 上。
-
Borland C++ 5.8.2 在 Windows 上。
-
GNU C++
-
3.2.x., 3.3.x, 3.4.x, 4.0.x, 4.1.x 在 Linux 上
-
4.1.x 在 Solaris 上
-
3.4.x 在 Windows 上
-
-
Intel C++ 9.1 在 Windows 上,9.0 在 Linux 上。
-
Metrowerks CodeWarrior 9.4 在 Windows 上。
-
Microsoft Visual C++ 6.0(sp5,带和不带 STLport)、7.0、7.1、8.0。注意:Boost 不支持 Visual C++ 8.0 附带的非标准“安全”C++ 库,这可能会导致来自 Boost 头文件和其他符合标准的 C++ 代码的许多虚假警告。要抑制这些警告,请定义宏
_SCL_SECURE_NO_DEPRECATE
。 -
Sun Studio 11 在 Solaris 上。
致谢
Thomas Witt 管理了此版本。
很多人贡献了他们的时间和专业知识,使此版本成为可能。特别感谢 Vladimir Prus 使 Boost.Build 版本 2 成为现实,David Abrahams 撰写了新的入门指南,以及 Greg D. 回答了无数问题。