Boost C++ 库

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

版本 1.44.0

版本 1.44.0

2010年8月13日 17:00 GMT

文档

下载
平台文件
unixboost_1_44_0.tar.bz2
boost_1_44_0.tar.gz
windowsboost_1_44_0.7z
boost_1_44_0.zip

新库

  • Meta State Machine: 来自 Christophe Henry 的高性能、富有表现力的 UML2 有限状态机
  • Polygon: 用于具有整数坐标的平面多边形的布尔运算/裁剪、调整大小/偏移等,来自 Lucanus Simonson。

更新的库

  • Accumulators:
    • 更正各种文档不准确之处
  • Asio:
    • 缩短了编译时间。(请注意,某些程序可能需要添加额外的 #include,例如,如果程序使用 boost::array 但未显式包含 <boost/array.hpp>。)
    • 减小了生成的代码大小。
    • 重构了 deadline_timer 实现以提高性能。
    • 通过使用专用的隐藏线程等待计时器,提高了 Windows 上的多处理器可伸缩性。
    • 提高了 asio::streambufasync_read()async_read_until() 的性能。这些读取操作现在在读取时使用 streambuf 的现有容量,而不是将读取限制为 512 字节。
    • 添加了可选的单独编译。要启用,请将 #include <boost/asio/impl/src.cpp> 添加到程序中的一个源文件,然后在项目/编译器设置中定义 BOOST_ASIO_SEPARATE_COMPILATION 来构建程序。或者,可以定义 BOOST_ASIO_DYN_LINK 以构建作为共享库一部分的单独编译的 Asio。
    • 添加了新的宏 BOOST_ASIO_DISABLE_FENCED_BLOCK,以允许禁用完成处理程序周围的内存栅栏,即使启用了线程支持。
    • 重做了超时示例,以更好地说明典型用例。
    • 确保处理程序参数作为 const 类型传递。
    • 修复了 async_send_tonull_buffers 变体中不正确的参数顺序 (#4170)。
    • 确保在 getaddrinfo 仿真中使用 unsigned charisdigit (#4201)。
    • 修复了处理非常小但非零的超时 (#4205)。
    • 修复了当将空缓冲区序列传递给组合的读取或写入操作时发生的崩溃。
    • buffers_iterator 中添加了缺少的 operator+ 重载 (#4382)。
    • 实现了在 Windows 上取消 null_buffers 操作。
  • Config:
  • Filesystem:
    • 此版本包含库的版本 2 和版本 3。版本 3 是一个重大升级,会破坏一些现有的用户代码,因此版本 2 是默认版本。鼓励用户迁移到版本 3。有关更多信息,请参阅“版本 2”和“版本 3”。
    • 修复了共享库的符号可见性问题。
    • 修复了各种小问题。
    • 修复了问题: #3863, #4248
  • Foreach:
    • 添加了 boost/foreach_fwd.hpp 以用于 foreach 自定义点的前向声明,修复了 #3998
    • 删除了过时的 sun 编译器解决方法,修复了 #4306
  • Fusion:
    • 添加了 fusion::reverse_fold, fusion::iter_foldfusion::reverse_iter_fold (#1623)。
  • Hash:
    • 通过定义宏 BOOST_HASH_NO_IMPLICIT_CASTS,可以选择在调用哈希函数时防止隐式转换,这可以避免一些细微的问题。这可能会在未来的版本中默认激活。
  • Iostreams:
    • 对文件描述符类进行了多项修复,包括对 file_descriptorfile_descriptor_sourcefile_descriptor_sink 的构造函数和 open 方法的重大更改。有关详细信息,请参阅文档。如果您定义 BOOST_IOSTREAMS_USE_DEPRECATED,旧方法仍然可用 (#3323, #3517, #4335)。
    • 修复了压缩和解压缩的几个问题 (#2318, #4091, #3348, #2783, #1579, #3853)。
    • 以及更多杂项修复 (#3851, #3279, #3689, #2356, #2996, #4102, #2998, #1612, #2325)。
    • 感谢 Steven Watanabe 完成了几乎所有这些修复。有关更多详细信息,请参阅发行说明
  • Math:
    • 修复了不正确的范围和对 Rayleigh 分布的支持。
  • MPL:
    • 使 mpl::stringmpl::transform 一起使用。
  • Multi-index Containers:
    • 修复了一个错误,该错误阻止在 ModifierRollback 是不同类型时,在 orderedhashed 索引中使用带有回滚的 modify_key(票证 #4130)。
  • Proto:
    • 行为上的微小变化:当使用 proto::and_ 作为变换时,应用所有变换,但仅返回应用最后一个变换的结果。有关详细信息,请参阅 Proto 的 发行说明
    • 行为上的微小变化:proto::as_exprproto::as_child 不再通过表达式域的生成器运行已经是 proto 表达式的对象。有关详细信息,请参阅 Proto 的 发行说明
    • 行为上的微小变化:Proto 在可能的情况下使用 proto::basic_expr 而不是 proto::expr,以获得更好的编译时间。有关详细信息,请参阅 Proto 的 发行说明
    • 添加了对子域的支持。
    • 引入了每个域的 as_expras_child 自定义点,以允许对变量捕获行为进行特定于域的自定义。
    • proto::_default 变换也是一种语法,它匹配变换知道如何处理的表达式。
    • 添加了 proto::_void,一个无操作的原始变换,它什么也不做并返回 void
    • proto::pass_through 变换不会剥离表达式包装器,修复了 #4175
    • 调用 proto 域时的常量正确性修复。
  • Regex:
  • Spirit: Spirit V2.4,有关详细信息,请参阅“新增功能”部分。
  • System:
    • system_categorygeneric_category 更改为函数,以符合 C++0x FCD。此更改可能会导致某些用户代码出现编译错误;解决方法是在对 system_categorygeneric_category 的引用中添加 "()",以便它们变为函数调用。
    • 修复了共享库的符号可见性问题。
    • 修复了问题: #4254, #3994, #3474
  • Thread:
  • TR1:
    • 修复了 VC10 支持。
    • std::tr1::result_of 始终使用 TR1 ResultOf 协议,即使在支持基于 C++0x decltype 的实现的编译器上也是如此。
  • Type Traits:
    • 在整个库中添加了对右值引用的支持,以及两个新的 traits 类 is_rvalue_referenceis_lvalue_reference。修复了 #4407#3804
    • 修复了票证 #3621
  • uBLAS:
    • 新的赋值运算符,以多种漂亮的方式馈入向量和矩阵 (#4034)。谢谢 Nasos
    • 基于 Doxygen 的新文档
    • 使算术运算符 (+,-,*,/) 能够在 std::complex 和整数类型的 ublas 容器之间工作 (#3649)。谢谢 Neal
    • 删除了 functional.hpp 中未使用的变量 (#4377)。谢谢 Marco
    • 新的 matrix_indirectvector_indirect 视图,用于使用索引矩阵或向量访问元素
  • Utility:
    • 添加了一个新的模板类,boost::initialized<T>,以修复 #3472
    • 新版本的 value_initialized<T> 在编译器已完全实现值初始化时不再调用 memset (#3869)。
    • 新模板 boost::tr1_result_of,即使 boost::result_of 使用基于 C++0x decltype 的实现,它也实现 TR1 ResultOf 协议。
  • Uuid:
    • 定义 BOOST_UUID_NO_TYPE_TRAITS 以删除对 Boost.TypeTraits 的依赖。
    • operator<< 处理左对齐、内部对齐和右对齐操作符。
    • 添加了 to_stringto_wstring 以将 uuid 转换为字符串。
    • 修复了文档中的小错误。
  • Wave: 有关详细信息,请参阅 Changelog
  • Xpressive:
    • nested_results 中,将不可移植的 using 声明替换为 typedef
    • 支持用户定义的断言,其中包含非局部变量的占位符。

更新的工具

  • Boostbook:
    • 速度显著加快。
    • 改进的语法突出显示器。
  • Quickbook:
    • 使用 cygwin 1.7 API 以获得更好的路径处理。
    • 改进的 boostbook 生成。
    • 调整语法以清理一些边缘情况。
    • 有关更多详细信息,请参阅更改日志

测试的编译器

Boost 的主要测试编译器是

  • OS X
    • Intel Leopard 上的 GCC 4.0.1。
  • Linux
    • 64 位 Suse 上的 GCC 4.4。
  • Windows
    • Visual C++ 7.1 SP1、8.0 SP1、9.0 SP1 和 10.0。
    • 使用 Mingw 的 GCC 4.3.3。
  • FreeBSD
    • GCC 4.2.1,32 位和 64 位。

Boost 的其他测试编译器包括

  • Linux
    • 32 位 Red Hat Enterprise Linux 上的 Intel 10.1。
    • 64 位 Red Hat Enterprise Linux 上的 Intel 10.1、11.0、11.1。
    • Red Hat Enterprise Linux 上的 GCC 3.4.6、4.2.4、4.3.4、4.4.3、4.5。
    • Red Hat Enterprise Linux 上的带有 C++0x 扩展的 GCC、4.3.4、4.4.3、4.5。
    • 64 位 Suse 上的 GCC 4.4。
    • Red Hat Enterprise Linux 上的 QLogic PathScale(TM) Compiler Suite: Version 3.2。
    • 来自 subversion 的 Clang(将与 LLVM 2.8 一起发布)。
  • OS X
    • Leopard 上的 Intel C++ Compiler 10.1、11.0、11.1。
    • GCC 4.0.1、4.2.1(Apple 构建)。
    • GCC 4.4
    • 带有 C++0x 扩展的 GCC,4.4
    • 来自 subversion 的 Clang(将与 LLVM 2.8 一起发布)。
  • Windows
    • 32 位 XP 上的 Visual C++ 7.1 SP、8.0、9.0。
    • XP 和 Windows Mobile 5.0 上使用 STLport 5.2 的 Visual C++ 9.0。
    • XP 上的 Visual C++ 10.0。
    • 64 位 Windows 7 上的 Visual C++ 10.0。
    • Borland/Codegear C++ 5.9.3、6.1.3 (2009)、6.2.1 (2010)。
    • Vista 32 位上带有 Visual C++ 9.0 后端的 Intel C++ 11.1。
    • Mingw 上的 GCC 4.3.3、4.5。
    • Mingw 上带有 C++0x 扩展的 GCC,4.5。
  • AIX
    • AIX Version 5.3.0.40 上的 IBM XL C/C++ Enterprise Edition, V11.1.0.0。
  • FreeBSD
    • 64 位 FreeBSD 7.2 上的 GCC 4.2.1。
    • 32 位 FreeBSD 8.0 上的 GCC 4.2.1。
  • Solaris
    • Solaris 5.10 上的 Sun C++ 5.10。

鸣谢

Beman Dawes、Eric Niebler、Rene Rivera、Daniel James 和 Vladimir Prus 管理了此版本。

感谢 Marshall Clow 组织了错误冲刺,并感谢所有参与者。