Boost C++ 库

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

版本 1.57.0

版本 1.57.0

2014 年 11 月 3 日 21:55 GMT

文档

下载
平台文件
unixboost_1_57_0.tar.bz2
boost_1_57_0.tar.gz
windowsboost_1_57_0.7z
boost_1_57_0.zip

更新的库

  • 任何:
    • 不再需要 RTTI(TypeIndex 库用于 RTTI 模拟)
    • 修复了 #8958
  • Asio:
    • 修复了kqueuereactor,使其可以在 FreeBSD 上工作 (#10606)。
    • 修复了kqueuereactor 中的一个问题,该问题导致在使用 Mac OS 上的串口时发生自旋 (#10496)。
    • 修复了kqueuereactor 对只读文件描述符的支持 (#10367)。
    • 修复了使用/dev/pollreactor 时的编译错误 (#10350, #10572)。
    • 更改了 Windows 后端以使用 WSASocketW,因为 WSASocketA 已被弃用 (#10534)。
    • 修复了 Visual C++ 2013 报告的一些警告 (#10376)。
    • 修复了 WinRT 版本的字节序转换函数中使用的整数类型 (#10539)。
    • 更改了文档,以指示当包含 asio.hpp 便利头文件时,use_futurespawn() 不可用 (#10567)。
    • 显式标记 asio::strand 为已弃用。请改用 asio::io_service::strand
  • 循环缓冲区:
    • 修复了一些警告,并使用了 Boost.Move 中的 move_if_noexcept #7888
  • 配置:
    • 添加了 BOOST_HAS_PRAGMA_DETECT_MISMATCH
  • 容器:
  • 协程:
    • 可选地使用 valgrind 注册堆栈
    • #10386 asymmetric_coroutine.hpp 中的 MSVC 链接错误:符号已定义
    • #10536 调用 'begin(...pull_coroutine< R > & c)' 是不明确的
  • Flyweight:
    • 通过 Boost Serialization 添加了序列化支持。
    • flyweight 默认构造函数在 Boost 1.56 中变为显式,这在某些初始化场景中引入了回归。已恢复以前的非显式默认构造函数(ticket #10439)。
  • 几何:
    • 改进
      • 在 rtree insert()、remove() 和 count() 函数中支持可转换为 value_type 的参数
    • 已解决的 ticket
      • 8402 隐式转换警告
      • 9354 缠绕策略中的错误影响 non-cartesian 坐标系的 within() 和 covered_by()
      • 10177 缺少 include
      • 10345 距离计算对于某些坐标类型编译失败
      • 10398 buffer 中错误的邻居检查,计算转弯
      • 10421 球面 CS 的无效 Point-Box 距离
      • 10615 Rtree 构造函数功能请求
      • 10643 大坐标的无效 point_on_surface() 结果
      • 10668 隐式转换警告(重复 8402)
    • Bugfixes
      • 算法 buffer 中几个错误的修复
      • CCW 多边形的 point_on_surface() 中的错误 (extreme_points()) 和数值问题(感谢 Matt Amos)
      • 通过用 point_on_border() 替换 point_on_surface() 修复了 A/A 的 disjoint() 中的错误(感谢 Matt Amos)
      • convex_hull() 的结果,在开放输出中重复 Point,对于 1 点和 2 点输入的点数太少
      • centroid() 中大坐标的精度不足,通过 Points 平移修复(与 ticket 10643 相关)
      • for_each_segment() 未考虑开放几何的最后一个段
  • 进程间:
  • Iterator:
    • 库的大多数组件已移至 boost::iterators 命名空间。为了向后兼容,这些组件也可以在 boost 命名空间中访问。
    • 现在根据迭代器类别有条件地定义迭代器运算符。
    • 库的一些内部组件已公开(例如,minimum_category)。
  • Lexical Cast:
    • 一些内部更改,库现在由多个头文件组成,而不是单个头文件 #10391, #10173
  • Math:
    • 添加了超指数分布。
    • 修复了不完全伽玛函数中的一些虚假溢出(感谢 Rocco Romeo)。
    • 修复了当 a = b = 0.5 时不完全贝塔函数的导数中的错误 - 这也影响了几个非中心分布,请参见 issue 10480。
    • 修复了函数 round 中的一些边界情况。
    • 如果标准库支持已损坏,则不要在 cstdfloat.hpp 中支持 80 位浮点数。
  • Move:
  • 添加了 unique_ptr 智能指针。感谢 Howard Hinnant 提供的出色的 unique_ptr 模拟代码和测试套件。
  • 添加了 move_if_noexcept 实用程序。感谢 Antony Polukhin 的实现。
  • MultiArray:
    • 修复了 clang 的友元声明相关警告(感谢 Marcel Raad)。
  • Multiprecision:
    • 更改了有理数到浮点数的转换,以精确舍入到最接近的值。
    • 添加了改进的通用浮点数到有理数的转换。
    • 修复了 cpp_bin_float 的指数函数中的罕见错误。
    • 修复了各种小的文档问题。
  • Multi-index Containers:
    • std::tuple 可用时,这些可以用于配备复合键的索引中的查找操作。为了向后兼容,也支持 boost::tuple
  • Preprocessor:
    • 添加了 is_begin_parens 和 remove_parens。
    • 添加了元组功能以并行所有数组功能。
    • 修复了 VC++ 空元组数据的问题。
    • 更新了内部 is_empty 以在使用可变参数宏时使用更优越的可变参数版本。
    • 更新了 clang 以使其具有与 gcc 相同的可变参数支持。
    • 更新了新功能的文档。
  • Thread:
    • 新的实验性功能
      • #6227 Synchro:在提供它们的编译器上对通用锁定算法使用可变参数模板
      • #10298 Synchro:添加了队列视图。
      • #10300 Async:添加了 generic_executor_ref。
      • #10552 添加 make_valid_future
    • 修复的错误
      • #6782 call_once 在 Visual Studio 上使用不正确的 barrier intrinsic
      • #6787 如果系统时间回滚,boost::thread::sleep() 会挂起
      • #7665 this_thread::sleep_for 不再在 thread 中使用 steady_clock
      • #9307 future::fallback_to 断言,错误信息为 ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument
      • #9308 使用 lambda 调用 future::async 时,terminate called throwing an exception 失败 - clang-darwin-asan11
      • #9310 test_4648_lib 在 clang-darwin-asan11 上失败
      • #9425 Boost promise & future 未对值存储使用提供的分配器
      • #9558 future continuations 单元测试在 Mac 10.7/32-bit/x86/darwin-4.2.1 上的 get()/pthread_cond_wait() 中挂起
      • #9787 [windows] 传递给 basic_timed_mutex::try_lock_until 和 condition_variable::wait_until 的小 duration 值可能导致 win32 无限或接近无限的等待
      • #9880 [windows] 如果系统时间 < 1970,boost::condition_variable.timed_wait() 异常
      • #10159 GCC 4.4 错误 sorry, unimplemented
      • #10196 thread_specific_ptr 不支持 void*
      • #10296 Boost.Thread 1.56 rc1 在 Mingw 上无法编译
      • #10297 Boost.Thread 1.56 rc1 在 armhf 上使用 clang 构建时挂起
      • #10340 C++03 模式下不存在 boost::promise<T>::set_value(const T&) 重载
      • #10425 when_all/when_any 的文档缺失。
      • #10426 考虑 when_all 中的 deferred future。
      • #10427 考虑 when_any 中的 deferred 和 ready future。
      • #10428 适应 Boost.Move 中新的 unique_ptr 接口
      • #10465 当结果是元组时,when_all/when_any 的实现缺失。
      • #10476 使用 BOOST_THREAD_MOVABLE_ONLY<T> 的类不满足 is_copy_constructible<T>::value == false
      • #10478 boost/thread/future.hpp 中的数据竞争
      • #10529 pthread/condition_variable_any 构造函数为 pthread_cond_init 报告不正确的错误代码
      • #10563 shared_future<R>::then 应该是 const
  • TypeIndex:
    • 现在使用 BOOST_HAS_PRAGMA_DETECT_MISMATCH 来检测 ODR 违规 #10404
    • 修复了拼写错误 #10294
  • TypeTraits:
    • 添加了新 trait is_copy_assignable 和 is_final。
  • Units:
    • 新的单位系统 <boost/units/systems/information.hpp> 单位:比特、字节、nat、hartley 和 shannon,
    • 为二进制前缀 kibi、mebi、gibi、tebi、pebi、zebi 和 yobi IEC 前缀添加比例单位
    • 修复了 msvc-14 上 NaN 的输出
    • 添加了对 C++11 numeric_limits::max_digits10 和 ::lowest 的支持
    • 警告修复
  • Unordered:
    • 修复了迭代器中的 pointer typedef (#10672)。
    • 修复了 Coverity 警告 (GitHub #2)。
  • Utility:
    • 重做了采用 distance 参数的 next()prior() 函数。当 distance 是无符号数或两个参数都是整数时,代码现在可以正确工作。新代码依赖于第一个参数支持的运算符来选择正确的实现。
  • uBLAS:
    • 添加了两种新类型:matrix_row 和 matrix_column facade。使用它们,可以分别将矩阵作为行数组和列数组访问。
    • 添加了 fixed_vector/fixed_matrix 类来表示小的 - 固定大小的容器。由于它使用 std::array,因此需要 c++11
    • 修复了长期存在的带状矩阵错误 (https://svn.boost.org/trac/boost/ticket/7549)。
    • 矩阵和向量的接口已使用 cbegin、cend、crbegin 和 crend 成员函数进行了扩展,如 c++11 中定义的那样。
    • 移除了 doxygen 文档以使发行版更轻便
    • 移除了 MSVC 关于未使用参数的警告
    • 更改了 uBlas 开发文件夹结构(不会影响库的用户)
    • 对各种编译器上的警告和错误进行了非常大的修改。除了 一些难以解决的警告和较旧的编译器不兼容性之外,现在使用 uBlas 进行编译将更加干净。

已测试的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4
    • Clang, C++14: 3.5
    • GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 4.8.2
    • GCC, C++98: 4.9.1
    • GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1
    • GCC, C++14: 4.9.1
    • Intel: 13.1, 14.0
    • Intel, C++11: 13.1, 14.0
    • QCC: 4.4.2
  • OS X
    • Apple Clang: 6.0
    • Apple Clang, C++11: 6.0
    • Apple Clang, C++14: 6.0
    • GCC: 4.2.1, 4.9.1
    • Intel: 12.0
  • Windows
    • GCC, mingw: 4.4.0, 4.4.7. 4.5.4, 4.6.3, 4.7.2, 4.7.3, 4.8.0, 4.8.2, 4.9.0
    • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
  • FreeBSD
    • GCC: 4.2.1
  • QNX
    • QCC: 4.4.2

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4.2
    • Clang, C++14: 3.5.0, trunk
    • GCC: 4.4.7, 4.6.4, 4.7.3, 4.8.1, 4.8.2, 5.0 (实验性)
    • GCC, C++11: 4.4.7, 4.8.2, 4.8.3, 4.9.1
    • GCC, C++14: 4.9.1
    • Intel: 11.1, 12.1, 13.0, 13.1, 14.0
    • Intel, C++11: 13.1, 14.0
  • OS X
    • Apple Clang: 6.0
    • Apple Clang, C++11: 6.0
    • Apple Clang, C++14: 6.0
    • Clang: trunk
    • Clang, C++11: trunk
    • GCC: 4.2.1, 4.9.1
    • Intel: 12.0
  • Windows
    • GCC, mingw: 4.4.0, 4.4.7, 4.5.4, 4.6.3, 4.7.3, 4.8.0, 4.8.2, 4.9.0
    • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0
  • FreeBSD
    • GCC: 4.2.1
  • QNX
    • QCC: 4.4.2

致谢

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