Boost C++ 库

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

版本 1.59.0

版本 1.59.0

2015年8月13日 15:23 GMT

文档

下载
平台文件
unixboost_1_59_0.tar.bz2
boost_1_59_0.tar.gz
windowsboost_1_59_0.7z
boost_1_59_0.zip

已知问题

  • Boost.Log 包含一个回归错误,该错误阻止一些日志语句编译 (#11549)。这已在 git 中修复。

新库

  • Convert: 来自 Vladimir Batov 的可扩展和可配置的类型转换框架。
  • Coroutine2: (C++14) 来自 Oliver Kowalke 的协程库。

更新的库

  • Context:
    • #11223 检查对 std::integer_sequence 的支持
    • execution_context 在内部使用 Windows Fibers 与 BOOST_USE_WINFIBERS
    • 支持 Windows 上 MinGW 的汇编器 (32 位)
  • Coroutine:
    • #10978 删除额外的分号
    • #11230 coroutine_error 返回悬空异常消息指针
    • #11234 与 boost::range::algorithms 一起使用时无法编译
    • #11356 协程在使用 BOOST_USE_SEGMENTED_STACKS 时发生段错误
  • Fusion:
    • 为序列添加一个新概念,Unbounded Sequence,为迭代器添加 Unbounded Iterator。目前,Unbounded Sequence 影响 fusion::(value_)at(_c)fusion::(value_)at_key 的行为。Unbounded Iterator 没有效果(为未来版本保留)。有关更多详细信息,请参阅 Unbounded SequenceUnbounded Iterator。(pull-request 85
    • 支持 C++11 可变参数模板用于 fusion::list。(pull-request 84
    • 修复的错误
      • 修复缺少包含 <utility>。(#11161
      • 恢复一些 constexpr 支持,1.58.0 中的回归。(#11211, #11267
      • 修复由于缺少包含而导致的 fold 编译错误。(#11249
      • 修复由于适应空结构而导致的编译错误,1.58.0 中的回归。(#11269
      • 删除对序列比较的过时(且不正确)的解决方法,它影响 MSVC-8 及更早版本。(pull-request 78
      • 修复复制从 fusion::list 派生的序列时出现的编译错误,1.58.0 中的回归。(pull-request 87
      • 修复复制 fusion::tuple 时出现的编译错误。(#11140
      • 为 GCC 4.6 添加使用 constexpr 的解决方法。(#11517
  • Geometry:
    • 附加功能
      • 添加了 rtree const_iterator、begin()、end() 以及对 Boost.Range 的支持。
      • 在几何模型中支持 C++11 std::initializer_list
      • Disjoint 和 intersects 支持以下几何组合:multipoint/linestring、multipoint/multilinestring。
      • 添加了 relate() 和 relation() 算法。
      • 已为点状和线性几何图形的组合实现 Intersection
      • 为 difference(pointlike, linear) 添加了实现
      • 新算法 is_empty,如果几何图形表示空集,则返回 true
      • envelope 算法支持球面赤道坐标系中的点状和线性几何图形
      • envelope 算法支持地理坐标系中的点状几何图形
    • 改进
      • 将 rtree const_query_iterator 类别升级到 ForwardIterator。
      • 显着提高了多点周围缓冲区的缓冲区性能
    • 重大更改
      • buffer side 策略现在返回 error_code 而不是 bool。如果您有自己的自定义 side 策略,则应进行调整
    • 已解决的工单
      • #11113 支持使用 BOOST_FOREACH 轻松枚举所有元素
      • #11232 功能请求 - relate()
      • #11236 整数坐标类型的 centroid() 的无效结果
      • #11268 multi_linestring 和 box 的 boost::geometry::intersection 接口中的回归 - 在 1.57 VS 1.55 上无法编译
      • #11332 极端坐标差异的缓冲区的断言失败
      • #11346 段迭代器不适用于返回值的范围而不是引用
      • #11436 sym_difference(py1, py2, mpy) 返回无效的多边形
    • 错误修复
      • Buffer:使用更强大的方法来计算交点的侧面,这修复了缓冲区生成中的几个错误
      • 修复了从 IP 计算的段的选择,在两个段的交点中。现在选择最接近段点点的段,或者选择最短段上的段。这避免了(很少发生)生成微小三角形导致输出多边形无效
      • 在重新缩放中,舍入而不是截断为整数网格(此修复和前面提到的修复可能会对输出几何图形产生一些影响)
      • 修复 detail::has_spikes 中潜在的无限循环(如果传递的点具有 NaN 坐标,则可能发生循环)
  • Intrusive:
    • 实现了 类似 map 和 multimap 的接口
    • 重构了哈希表容器以减少模板实例化。
  • Lexical Cast:
    • 修复的警告
    • 简化的元编程(感谢 Edward Diener)
  • Log:
    • 一般更改
      • 在具有 符号可见性 支持的系统(例如 Linux)上,该库现在构建时隐藏了所有内部符号。
      • 重大更改: 该库已移植到 Boost.TypeIndex,用于其底层类型信息管理工具。这影响了以下公共接口
        • 库抛出的 invalid_type 异常现在附加了 typeindex::type_index 作为冒犯性类型的描述。该类型以前由 type_info_wrapper 标识。
        • Boost.Exception type_info_info 错误信息现在包含 typeindex::type_index 而不是 type_info_wrapper
        • attribute_value::get_type() 现在返回 typeindex::type_index 而不是 type_info_wrapper。用户定义的属性值实现应进行类似更改(attribute_value::impl::get_type() 虚拟方法现在也返回 typeindex::type_index)。
      • type_info_wrapper 组件已被弃用,将在未来版本中删除。建议使用 Boost.TypeIndex 作为替代品。
      • 删除了先前已弃用的标头:boost/log/utility/intrusive_ref_counter.hppboost/log/utility/explicit_operator_bool.hppboost/log/utility/empty_deleter.hpp
      • 添加了对为 OpenBSD 构建库的支持。(#11446
      • 改进了用于异步日志记录的事件同步原语的内部实现。(#11398
    • 错误修复
      • 修复了在某些情况下 attribute_value_set::insert()attribute_value_set 构造函数的错误行为。(#11190
    • 有关更多详细信息,请参阅 changelog
  • Move:
  • Multi-index Containers:
  • Predef:
    • 修复了 predef_check 功能的许多问题。
    • 更新了 SunPro 检测以适应来自 Oracle 的最新版本的编译器。
    • 为 Boost Build 端的 predef_check 表达式添加了 andor 逻辑运算符。
    • 修复了 BOOST_ARCH_PARISC 以正确拼写名称。
    • 修复了 MAKE_YYYYM 宏以正确限制月份。
  • Program Options:
    • 修复了 MSVC 和 MinGW 的编译错误、缺少 dllexport 和警告 (Daniela Engert, Marcel Raad)。
    • 修复了未初始化的字段 (Zoey Greer)。
    • 阻止具有隐式值的选项使用单独的令牌 (Michael John Decker)。
    • 使多令牌限制为最大整数,而不是 32K (Hans Hohenfeld)。
    • 代码格式和文档修复 (Jurko Gospodnetić, Lauri Nurmi)。
    • 对无 rtti 构建的最小支持 (Minmin Gong)
    • 不要将环境变量指针递增到末尾之外 (Vladimir Prus)
  • Property Tree:
    • 具有完整 Unicode 支持的新 JSON 解析器。
    • 重大更改: 新解析器不支持 JSON 文件中的注释或字符串连接。这些功能是旧解析器的非标准扩展,但删除它们可能会破坏依赖于它们的代码。
  • Boost.Test v3:
  • TypeIndex:
    • 删除了对某些 Boost 库的依赖,以缩短编译时间和提高模块化
    • 修复了测试中的警告并完成了其他维护改进。
  • Variant:
    • 修复了 element_index.hpp 中缺少包含 #11196, #11283
    • 修复了 C++14 和 const 引用的 boost::apply_visitor 用法 #11251, #11285
    • 放宽了所有 get<reference>(variant_variable) 函数的编译时检查(感谢 Nicolas Cornu)

已测试的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.4
    • Clang, C++14: 3.6
    • GCC: 4.4.7, 4.8.2, 4.9.3
    • GCC, C++11: 4.4.7
    • GCC, C++14: 4.9.3
    • Intel: 15.0
  • Windows
    • Visual C++: 8.0, 9.0, 10.0, 11.0, 12.0, 14.0
  • Android
    • Clang: 3.6
    • GCC: 4.8, 4.9
  • SunOS
    • Sun: 6.0
  • QNX
    • QCC: 4.4.2

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.1, 3.2, 3.3, 3.4
    • Clang, C++14: 3.6, 3.7
    • GCC: 4.4.7, 4.5.3, 4.6.4, 4.7.3, 4.8.1, 5.1.0, 6.0.0
    • GCC, C++11: 4.4.7
    • GCC, C++14: 4.9.3, 5.1.1
    • Intel: 15.0
  • Android
    • Clang: 3.6
    • GCC: 4.8, 4.9
  • FreeBSD
    • Clang: 3.4.1
    • GCC: 4.8.5, 5.1.0, 6.0.0

致谢

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