Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

版本 1.34.0

版本 1.34.0

2007 年 5 月 12 日 12:00 GMT

文档

下载
平台文件
unixboost_1_34_0.tar.bz2
boost_1_34_0.tar.gz
windowsboost_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。

更新的库

  • Assign 库:
    • 通过新函数 ptr_map_insert() 支持 ptr_map<key,T>
    • 当容器持有指向抽象基类的指针时,支持初始化 指针容器
  • Date_time 库:
    • 支持新的美国/加拿大时区规则和其他错误修复。有关详细信息,请参阅 更改历史
  • Filesystem 库: 为提交给 C++ 标准委员会 TR2 做准备的重大升级。更改包括
    • 国际化,由类模板 basic_pathbasic_filesystem_errorbasic_directory_iteratorbasic_directory_entry 提供。
    • 简化 路径接口,通过消除用于标识本机格式的特殊构造函数。
    • 合理化 谓词函数设计,包括添加几个新函数。
    • 通过引用 POSIX(ISO/IEEE 单一 UNIX 标准)进行更清晰的规范,并为 Windows 和其他操作系统提供规定。
    • 保留 尽可能多的现有用户代码。
    • 更高效的 目录迭代。
  • 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 库:
  • MultiArray 库: Boost.MultiArray 现在默认情况下为 operator[] 提供范围检查。可以通过在包含multi_array.hpp之前定义宏 BOOST_DISABLE_ASSERTS 来禁用范围检查。修复了与存储顺序相关的 multi_array::resize() 中的错误。
  • Multi-index Containers 库:
  • 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<> 的不兼容性错误。
    • 修复了与未初始化左值的转换赋值错误。
  • Parameter 库:
    • 每个 ArgumentPack 现在都是有效的 MPL 前向序列
    • 添加了对未命名参数(其关键字从其类型推断出来)的支持。
    • 添加了对命名和未命名模板参数的支持。
    • 新的重载生成宏直接解决了 转发问题
    • 另请参阅下面的 Python 库更改。
  • 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 库:
  • 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. 回答了无数问题。