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:
    • 修复了kqueue反应器,使其在 FreeBSD 上工作 (#10606)。
    • 修复了kqueue反应器中的一个问题,该问题导致在 Mac OS 上使用串口时出现自旋 (#10496)。
    • 修复了kqueue对只读文件描述符的反应器支持 (#10367)。
    • 修复了使用/dev/poll反应器时出现的编译错误 (#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)' 不明确
  • 享元:
    • 添加了通过 Boost 序列化进行序列化支持。
    • 在 Boost 1.56 中,flyweight 默认构造函数被设置为显式,这在某些初始化场景中引入了回归。已恢复以前的非显式默认构造函数(票证 #10439)。
  • 几何:
    • 改进
      • 支持可转换为 rtree insert()、remove() 和 count() 函数中 value_type 的参数
    • 已解决的票证
      • 8402 隐式转换警告
      • 9354 影响非笛卡尔坐标系的 within() 和 covered_by() 的缠绕策略中的错误
      • 10177 缺少包含
      • 10345 对于某些坐标类型,距离无法编译
      • 10398 缓冲区中错误的邻居检查,计算转弯
      • 10421 球面 CS 的无效点-框距离
      • 10615 Rtree 构造函数功能请求
      • 10643 大坐标的无效 point_on_surface() 结果
      • 10668 隐式转换警告(重复 8402)
    • 错误修复
      • 算法缓冲区中几个错误的修复
      • CCW 多边形的 point_on_surface() 中的错误 (extreme_points()) 和数值问题(感谢 Matt Amos)
      • 通过将 point_on_surface() 替换为 point_on_border() 修复的 A/A 不相交中的错误(感谢 Matt Amos)
      • convex_hull() 的结果,打开输出中的重复点,1 点和 2 点输入的点数太少
      • centroid() 中大坐标的不精确,通过点转换修复(与票证 10643 相关)
      • for_each_segment() 未考虑打开几何图形的最后一段
  • 进程间:
  • 迭代器:
    • 该库的大部分组件都移动到了 boost::iterators 命名空间中。为了向后兼容,这些组件也可以在 boost 命名空间中访问。
    • 迭代器运算符现在根据迭代器类别有条件地定义。
    • 该库的一些内部组件已公开(例如,minimum_category)。
  • 词法转换:
    • 一些内部更改,库现在由多个头文件组成,而不是单个头文件 #10391, #10173
  • 数学:
    • 添加了超指数分布。
    • 修复了不完全伽玛函数中的一些虚假溢出(感谢 Rocco Romeo)。
    • 修复了当 a = b = 0.5 时不完全贝塔导数中的错误 - 这也影响了几个非中心分布,请参见问题 10480。
    • 修复了函数 round 中的一些边界情况。
    • 如果标准库支持已损坏,则不支持 cstdfloat.hpp 中的 80 位浮点数。
  • 添加了 unique_ptr 智能指针。感谢 Howard Hinnant 提供的出色的 unique_ptr 模拟代码和测试套件。
  • 添加了 move_if_noexcept 实用程序。感谢 Antony Polukhin 的实现。
  • 多维数组:
    • 修复了 clang 的 friend 声明相关的警告(感谢 Marcel Raad)。
  • 多精度:
    • 将有理数转换为浮点数以精确舍入到最接近的值。
    • 添加了改进的通用浮点数到有理数转换。
    • 修复了 cpp_bin_float 的指数函数中的罕见错误。
    • 修复了各种小的文档问题。
  • 多索引容器:
    • std::tuple 可用时,这些可用于配备复合键的索引中的查找操作。为了向后兼容,也支持 boost::tuple
  • 预处理器:
    • 添加了 is_begin_parens 和 remove_parens。
    • 添加了与所有数组功能平行的元组功能。
    • 修复了 VC++ 中带有空元组数据的问题。
    • 更新了内部 is_empty 以在支持可变宏时使用更优越的可变版本。
    • 更新了 clang 以具有与 gcc 相同的可变支持。
    • 更新了新功能的文档。
  • 线程:
    • 新的实验性功能
      • #6227 Synchro: 在提供它们的编译器上使用通用锁定算法的可变模板
      • #10298 Synchro: 添加了队列视图。
      • #10300 Async: 添加了 generic_executor_ref。
      • #10552 添加 make_valid_future
    • 修复的错误
      • #6782 call_once 在 Visual Studio 上使用不正确的屏障内在函数
      • #6787 如果系统时间回滚,boost::thread::sleep() 会挂起
      • #7665 this_thread::sleep_for 不再在线程中使用 steady_clock
      • #9307 future::fallback_to 断言,错误:pthread_mutex_lock 中 mutex 锁失败:无效参数
      • #9308 当使用 lambda 调用时,future::async 失败,terminate 被调用,抛出异常 - clang-darwin-asan11
      • #9310 test_4648_lib 在 clang-darwin-asan11 上失败
      • #9425 Boost promise & future 不使用提供的分配器进行值存储
      • #9558 future 延续单元测试在 Mac 10.7/32 位/x86/darwin-4.2.1 上的 get()/pthread_cond_wait() 中挂起
      • #9787 [windows] 传递给 basic_timed_mutex::try_lock_until 和 condition_variable::wait_until 的小持续时间值会导致 win32 无限或接近无限的等待
      • #9880 [windows] 如果系统时间早于 1970 年,boost::condition_variable.timed_wait() 会抛出异常
      • #10159 GCC 4.4 错误:抱歉,未实现
      • #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 中的延迟 future。
      • #10427 考虑 when_any 中的延迟和就绪 future。
      • #10428 适配 Boost.Move 中的新 unique_ptr 接口
      • #10465 当结果为 tuple 时,缺少 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> 单位:比特、字节、纳特、哈特利和香农
    • 为二进制前缀 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:
    • 重新设计了接受距离参数的 next()prior() 函数。现在,当距离是无符号数或两个参数都是整数时,代码可以正常工作。新代码依赖于第一个参数支持的运算符来选择正确的实现。
  • 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 管理了此版本。