Boost C++ 库

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

版本 1.51.0

版本 1.51.0

2012 年 8 月 20 日 23:00 GMT

文档

下载
平台文件
unixboost_1_51_0.tar.bz2
boost_1_51_0.tar.gz
windowsboost_1_51_0.7z
boost_1_51_0.zip

补丁

  • Locale 补丁 - 修复了一个导致 boost::locale::utf::utf_traits 接受一些无效 UTF-8 序列的 bug,这是一个可能的安全漏洞。

新库

  • Context: 上下文切换库,来自 Oliver Kowalke。

更新的库

  • Algorithm:
    • 修复了 is_sorted_until ;现在匹配 c++11 标准在具有重复值的范围上的行为。
    • 为其余搜索算法添加了范围支持。
    • unhex 现在使用 Boost.Exception 来发出错误输入信号。
  • Asio:
    • 修复了 ip::tcp::iostream 和 C++11 之间的不兼容性 (#7162)。
    • 用下划线装饰 GCC 属性名称,以防止与用户定义的宏交互 (#6415)。
    • 添加了缺少的 #include <cctype>,某些 MinGW 版本需要它。
    • 更改为使用gcc在 ARM CPU 上可用的原子内置函数 (#7140)。
    • 更改了 strand 析构函数使其成为空操作,以允许 strand 对象在其关联的 io_service 被销毁后被销毁。
    • 添加了对一些更新版本的 glibc 的支持,这些版本提供了 epoll_create1() 函数,但总是以 ENOSYS 失败 (#7012)。
    • 更改了 SSL 实现,如果 SSL 引擎初始化失败,则抛出异常 (#6303)。
    • 修复了 buffered_write_stream 中的另一个回归 (#6310)。
    • 实施了各种小的性能改进,主要针对 Linux x86 和 x86-64 平台。
  • Config:
    • 弃用了一系列宏,这些宏是 c++11 特有的,但名称未显示它们是 c++11 特有的。创建了具有更好名称的新宏,并将旧宏与新宏配对。更新了文档以列出已弃用的宏。
  • Chrono:
    • #6918 由于未定义的 pthread_getcpuclockid,Boost Chrono 在 HP uX 上编译失败。
    • #6241 没有 std::wstring 支持的 boost::chrono 编译问题。
    • #6987 文档 & C++11。
    • #7041 time_point.hpp 依赖于 Boost.System。
    • #7042 避免 time_point 和 duration 依赖于 time.h 和 CLOCK_REALTIME。
    • #7058 在定义 BOOST_NO_EXCEPTIONS 时使其工作。
    • #7069 clock_string<thread_clock> 中的拼写错误。
    • #7081 boost/detail/win/basic_types.hpp 中的 WinError.h 大写错误。
  • Geometry:
    • 通过指针访问的点(例如,在线串中)现在应该在没有指针的情况下进行专门化。在以前的版本中,像 linestring<my_point*> 这样使用的类型 my_point 必须像这样专门化:template<> struct tag<my_point*>。现在库本身在调用 traits 类之前删除指针,所以现在它应该像这样:template<> struct tag<my_point>
    • 整数点的交点有时是错误的,已修复
    • 文档,simplify 中参数的顺序错误,已修复
    • 7030 球面距离,已修复(由 Karsten Ahnert 补丁修复)
  • Graph:
    • 重构了 Boost.Graph 提供的图类型中对内部和捆绑属性的支持,并清理了命名参数功能
      • compressed_sparse_row_graph 中启用了旧式(非捆绑)内部属性。
      • 捆绑属性应该适用于所有图类型和适配器。
    • Bug 修复
      • #6993: 错别字 Bundled Properties 文档
      • #7002: CSR 双向图初始化问题
      • #7023: 将内部类型 graphml_reader 放在匿名命名空间中
      • Trac 中未包含的其他 bug 和警告
  • Hash:
    • 支持标准智能指针。
    • hash_value 现在使用 SFINAE 实现,以避免在调用它时隐式转换为内置类型。
    • 更新为使用新的 config 宏。
  • Lexical cast:
    • boost::array<character_type, N>std::array<character_type, N> 转换具有更好的性能,更少的内存使用。
    • 修复了 volatile 输入参数的 bug #7157
  • Math:
    • 更新为使用新的 config 宏。
  • MSM:
  • Proto:
    • Proto 转换获得伪参数包扩展支持,用于解包表达式。有关更多信息,请参阅 发行说明
  • Ratio:
    • #7075 针对错误的解决方法:部分特化模板参数常量 "n1" 的类型依赖于另一个模板参数。
  • Regex:
    • 更新为使用新的 config 宏。
  • Thread:
    • #4258 在 mingw/gcc 4.5 上使用 boost thread 链接不起作用。
    • #4885 由于对 TlsAlloc 的无效假设,在进程退出时 set_tss_data 中发生访问冲突。
    • #6931 mutex 在 Intel Compiler 和 /debug:parallel 下永远等待
    • #7044 boost 1.50.0 头文件丢失。
    • #7052 Thread: BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 仅屏蔽 thread::operator==, thread::operator!= 前向声明,而不是定义。
    • #7066 尝试修复 current_thread_tls_key 静态初始化顺序。
    • #7074 多次定义的符号 boost::allocator_arg。
    • #7078 Windows 上线程属性堆栈大小的微不足道的 64 位警告修复
    • #7089 BOOST_THREAD_WAIT_BUG 限制了功能,但没有解决任何问题
  • Unordered:
    • 修复了在使用带有 C++03 分配器的 C++11 编译器时的构造/析构问题 (#7100)。
    • 删除 try..catch 以支持在没有异常的情况下编译。
    • 调整 SFINAE 的使用以尝试支持 g++ 3.4 (#7175)。
    • 更新为使用新的 config 宏。
  • Wave:
    • 有关详细信息,请参阅 Changelog
  • xpressive:
    • 解决 cygwin 和 mingw 上有 bug 的宽字符 ctype facet。
    • 解决某些 glibc 实现上缺少 __isctype 的问题。
    • op::as 不应假设 string::iterator != char*
    • 修复了 libc++ 上 cpp_regex_traits 中的断言,感谢 John Fletcher。

已测试的编译器

Boost 的主要测试编译器是

  • Linux
    • GCC: 4.2.4, 4.3.4, 4.4.3, 4.5.3, 4.6.2, 4.7
    • GCC, C++11 模式: 4.3.4, 4.4.3, 4.5.3, 4.6.2
    • Intel: 11.1, 12.0, 12.1
    • LLVM Clang 2.8
  • OS X
    • GCC: 4.4
    • GCC, C++11 模式: 4.4
    • Intel: 11.1, 12.0
  • Windows
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3
    • Visual C++: 8.0, 9.0, 10.0
  • FreeBSD
    • GCC: 4.2.1, 32 和 64 位

Boost 的其他测试编译器包括

  • Linux
    • Clang: 来自 subversion
    • LLVM Clang: 3.0
    • GCC: 4.2.4, 4.3.4, 4.4.4, 4.4.7, 4.5.3, 4.6.2, 4.6.3, 4.7.0, 4.7.1
    • GCC, C++11 模式: 4.3.4, 4.4.4, 4.5.3, 4.6.3
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.0, 12.1
    • Visual Age: 10.1
  • OS X
    • Clang: 来自 subversion
    • Clang, C++11 模式: 来自 subversion
    • Intel: 11.1, 12.0
    • GCC: 4.4
    • GCC, C++11 模式: 4.4
  • Windows
    • Visual C++: 8.0, 9.0, 10.0
    • GCC, mingw: 4.4.0, 4.6.3, 4.7.0
  • AIX
    • IBM XL C/C++ Enterprise Edition: V12.1.0.0
  • FreeBSD
    • GCC: 4.2.1, 32 和 64 位
  • Solaris
    • Sun: 5.10

致谢

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