版本 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 提供。 -
状态图库: 可以使用易于阅读和维护的 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 对象时,可以极大地提高性能。例如,当放入 Boost.Function 对象时,
bind(&X:foo, &x, _1, _2)
不需要堆分配。 -
Functional/Hash 库:
-
使用标准类的声明,以便库不需要包含所有头文件
-
已弃用<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 阅读器的编译库名称已更改为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 库:
-
来自 Ion Gaztanaga 的实用工具
pointer_cast
和pointer_to_other
,允许编写与指针无关的代码。
-
字符串算法库:
-
lexicographical_compare(字典序比较)
-
join(连接)
-
新的比较谓词
is_less
(小于) 和is_not_greater
(不大于)。 -
在各种算法(
*_head/tail
,*_nth
)中支持负索引(类似 Perl)。
-
-
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 进行了广泛测试,但许多其他编译器和平台也可以使用。有关更多信息,请参阅回归测试结果。
-
Mac OS X 上的 Apple GCC 4.0.1。
-
Windows 上的 Borland C++ 5.8.2。
-
GNU C++
-
Linux 上的 3.2.x、3.3.x、3.4.x、4.0.x、4.1.x
-
Solaris 上的 4.1.x
-
Windows 上的 3.4.x
-
-
Windows 上的 Intel C++ 9.1,Linux 上的 9.0。
-
Windows 上的 Metrowerks CodeWarrior 9.4。
-
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
。 -
Solaris 上的 Sun Studio 11。
致谢
Thomas Witt 管理了此版本。
许多人贡献了他们的时间和专业知识才使此版本成为可能。特别感谢 Vladimir Prus 使 Boost.Build 版本 2 成为现实,David Abrahams 撰写了新的入门指南,以及 Greg D. 回答了无数问题。