Boost
发布
arrow_drop_down
上一版本 (1.56.0)
2014 年 8 月 5 日
依赖项
本次发布增加了 241 个依赖项(分布在 91 个库中),并移除了 188 个依赖项(分布在 78 个库中。
平台 文件 SHA256 哈希
Unix boost_1_56_0.tar.bz2 13473....0ff1d
boost_1_56_0.tar.gz f5302....e7701
Windows boost_1_56_0.7z e70b8....14bab
boost_1_56_0.zip be168....23041

版本 1.56.0

2014 年 8 月 7 日 16:08 GMT

文档

其他下载

模块化

Boost 版本控制已迁移到使用 git 子模块的系统。这对于用户来说影响不大,但目录结构现在略有不同。

部分库的模块已移动到不同的模块中,并且从现有代码中提取了几个新模块。所有头文件路径应保持不变。新模块包括:

  • Assert:可定制的 assert 宏。由 Peter Dimov 维护。
  • Core:其他库使用的核心实用程序,依赖性最小。由 Peter Dimov、Glen Fernandes 和 Andrey Semashev 维护。
  • Lexical_Cast:通用的文本到字面量转换,例如将 int 表示为字符串,或反之,来自 Kevlin Henney。
  • Throw_Exception:用于从 Boost 库抛出异常的通用基础设施,来自 Emil Dotchevski。
  • Winapi:Windows API 声明,不包含 <windows.h>,供 Boost 内部使用。

新库

  • Align:
    • 内存对齐函数、分配器和适配器,来自 Glen Fernandes。
  • Type_Index:
    • 运行时/编译时可复制的类型信息,来自 Antony Polukhin。

更新的库

  • Acumulators:
    • 新的累加器 rolling_variancerolling_moment
  • Any:
    • 修复了与 rvalue 引用相关的错误(#9215#9462)。
    • 放弃了对旧编译器的支持。
  • Asio:
    • 修复了 asio::spawn() 以便与新的 Boost.Coroutine 接口正确工作(#9442#9928)。
    • 确保未完成的 asio::spawn() 协程在被 io_service 析构函数清理时被正确展开(#9731)。
    • 修复了由 io_service::wrap()strand::wrap() 生成的处理程序的续接钩子委托(#9741)。
    • 将 Windows I/O 完成端口后端更改为使用 ConnectEx(如果可用)来处理面向连接的 IP 套接字。
    • 将非 Windows(和非 IOCP Windows)平台的 io_service 后端更改为每个 io_service 实例使用一个条件变量。这解决了当 run_one() 从多个线程使用时可能出现的竞争条件。
    • 在计算基于某些 boost::chronostd::chrono 时钟的超时时,防止了整数溢出(#9662#9778)。
    • 对 kqueue 后端的 EV_CLEAR 处理进行了进一步更改,以解决 Mac OS X 上 close() 系统调用可能挂起的其他情况。
    • 修复了 resolver_query_base::flags::operator~ 实现中的无限递归(#9548)。
    • 使 Windows 上的 select 反应器在处理大量套接字时效率更高(#9528)。
    • 修复了报告的 Windows 特定类型别名问题。gcc (#9550).
    • 防止执行仅编译时缓冲区测试,以避免触发地址消毒器警告(#8295)。
    • 在较新版本的 Windows 上禁用了 GetQueuedCompletionStatus 超时解决方法。
    • 添加了在使用链路本地多播地址时对基于字符串的范围 ID 的支持。
    • 更改了 IPv6 多播组加入,以便在未明确指定接口时使用地址的范围 ID 作为接口。
    • 通过使用链路本地多播地址,修复了 Mac OS X 和 BSD 上的多播测试失败。
    • 针对一个gcc与匿名枚举相关的问题(#10042)。
    • 撤销了 Windows HANDLE 后端忽略 ERROR_MORE_DATA 的更改。相反,错误将像其他任何错误一样传播(即,在 error_code 中或作为 system_error 抛出),并将返回传输的字节数。对于需要处理部分消息的代码,应使用 error_code 重载(#10034)。
    • 修复了 signal_set 实现的信号编号检查中的一个偏移一位错误(#9324)。
    • 更改为使用 SSE2 内在函数而非内联汇编,以允许 Cray 编译器工作。
    • 停止使用最新 Visual C++ 和 Windows SDK 中标记为已弃用的某些 Winsock 函数。
    • 添加了一个用于使用gcc在 AIX 上构建单元测试的解决方法。
    • 各种次要文档改进(#8295#9605#9771)。
  • Assign:
    • 解决了一些 C++11 歧义(#3073)。
  • Atomic:
    • 该库已被重新设计。除了内部重构外,还修复了各种错误,包括功能测试宏的错误值和整数溢出处理。
    • 更改了 memory_order 枚举的值。具体值不是接口的一部分,但如果枚举用于用户的接口,此更改可能会潜在地破坏 ABI。
    • 在 MSVC 的 Windows x64 上实现了 128 位原子操作的支持。该库假定目标 CPU 中存在 cmpxchg16b 指令。一些早期的 AMD CPU 不支持此指令。要针对这些 CPU,请定义 BOOST_ATOMIC_NO_CMPXCHG16B 宏。
    • 在 MSVC 的 Windows ARM 目标上实现了实验性支持。
    • 在 GCC 的 DEC Alpha 目标上实现了实验性支持。
    • 改进了 GCC 对 ARMv6 及更高版本的支持。将所有原子操作实现为汇编块而不是基于 CAS 的循环。ARMv7 支持 64 位操作。
    • 实现了对 BOOST_ATOMIC_FLAG_INIT 宏和 atomic_flag 静态初始化的可选支持。(#8158
    • 修复了 SPARCv9 目标的编译。(#9446
    • 修复了 PowerPC 目标的编译。(#9447
    • 修复了 x86 和 x86-64 上与 Clang 的一些兼容性问题。(#9610#9842
    • 删除了 IA64 平台上 Windows 的专用代码。
  • Circular Buffer:
    • #9970#9334 支持 C++11 分配器模型。
    • 放弃了对旧编译器的支持。
  • Concept Check:
    • 减少警告(包括 #5012)。
  • Container:
  • Context:
    • fcontext_t 是 opaque 指针,指向 context-data
    • 更改了 make_fcontext() 的签名
    • #8826 无可执行栈
    • #9437 在 iOS 和 Windows Phone 8 上捕获异常
    • #9445 支持 x32 ABIs
    • #9522 支持 powerpc_64le
    • #9743 powerpc_64 le/be 的 bugfix
    • #9774 x86 在 Mac OS X + clang 上的 bugfix
  • Coroutine:
    • 支持对称协程
    • #9355 修复 protected_stack_allocator 中的竞争条件
    • #9551 支持的架构列表
    • #9734 mmap() 返回值检查错误
    • #9735 protected_stack_allocator 无 memset()
    • #9760 协程迭代器需要 const operator==
    • #10070 mmap() 返回值
    • #10157 protected_stack_allocator 中不需要文件描述符
  • Dynamic Bitset:
    • 支持 C++11 移动构造函数
    • MSVC 2013 警告修复
    • 支持 C++11 最小分配器
    • 添加 noexcept 规范
  • Chrono:
    • #6918 Boost Chrono 在 HP uX 上因未定义的 pthread_getcpuclockid 而编译失败
    • #8006 Boost::Chrono 启动时断言 - steady_clock::now() - Windows
    • #9337 chrono::process_cpu_clock 时间点在 Linux 上相差 1000 倍
    • #9342 V2 上 process_cpu_clock::timepoint io 的回归
    • #9419 boost::chrono::floor()/round() 和负持续时间不正确
    • #9698 boost::chrono::thread_clock 在 OSX 上未声明
    • #9720 boost::this_thread::sleep_for() 在 win32 上有时会立即返回
    • #9859 移除对 gcc-mingw 的引用
    • #9918 Solaris 上 chrono 编译错误,函数 timegm
    • #9811 boost/boost/chrono/duration.hpp:355:56: error: call to non-constexpr function 'static std::numeric_limits<float>::_Ty std::numeric_limits<float>::max()' /home/zosun/input_service/inputservices-core-service/other/boost/boost/chrono/duration.hpp: In static member function 'static constexpr double boost::chrono::detail::chrono_numeric_limits<double, true>::lowest()'
    • #10069 32 位上 chrono 时钟溢出
    • #10151 timegm 函数在 QNX 上不可用
  • Flyweight:
    • 在支持可变参数模板的编译器中,boost::flyweight<T> 现在提供了一个完美的转发构造函数来构造 T::T(以前使用的是模拟)。
    • flyweight 现在复制其底层类型的初始化列表构造函数和赋值运算符。
    • 修复了模块间静态初始化问题(#9553)。
    • 维护修复。
  • Fusion:
    • Fusion 已启用,可在 GPU 上使用
  • 几何:
    • 附加功能
      • 用于膨胀/收缩几何图形的新算法 buffer(buffer 本身已存在,但那仅用于扩大框)。
      • 新算法 remove_spikes,用于从环、多边形或多多边形中移除尖刺。
      • 新算法 point_on_surface,生成一个位于多边形表面(内部)的点。
      • 新算法 is_simple,根据 OGC 标准返回 true(如果几何图形是简单的)。
      • 新算法 is_valid,根据 OGC 标准返回 true(如果几何图形是有效的)。
      • 新算法 crosses,用于根据 OGC 标准检查此空间关系。
      • 集合运算算法(difference、intersection、sym_difference 和 union_)现在支持点状或线状几何图形对作为输入。
      • distance 和 comparable_distance 算法现在支持所有几何图形组合对。
      • 空间关系(covered_by、touches、within 等),此前不支持的,现在支持线状和/或面积状几何图形作为输入。
      • 在各种算法中支持 boost::variants 作为输入几何图形。
      • rtree 支持索引段。
      • rtree nearest() 谓词支持任意几何图形。
    • 已解决的工单
      • 8310 重叠多边形结果错误(使用 point_on_surface 修复了不相交的情况)。
      • 8375 非闭合多边形的 sym_difference 返回闭合多边形。
      • 8376 非闭合多边形的 difference 返回闭合多边形。
      • 9081 布尔运算从非自相交多边形创建自相交多边形。
      • 9245 检查 make_qbk.py 中的进程错误。
      • 9563 (Sym)difference 不成功,通过缩放到鲁棒类型修复。
      • 9628 within() 结果错误,因为缠绕策略对于几乎水平的线段工作不正常。
      • 9871 移除仅包含一个尖刺的多边形中的尖刺。
      • 9947 文档中缺少 WKT 信息。
      • 9759 R-tree knn 查询对于非笛卡尔坐标系结果错误。
      • 10019 Linestring 和 Box 的 difference 返回它们的交集。
      • 10077 boost/geometry/arithmetic/arithmetic.hpp 中的 concept 检查中的类型错误。
    • 错误修复
      • intersects(polygon) 可能返回其闭合点的自相交点,已修复。
      • equals() 对于非简单线性几何图形(根据 OGC 标准)可能返回错误结果,已修复。
      • touches() 对于 CCW 面积状几何图形工作不正常,已修复。
      • rtree nearest 查询对于非笛卡尔坐标系返回错误元素,已修复。
      • rtree 在某些情况下与 Interprocess 分配器一起使用时崩溃,已修复。
  • 哈希:
    • 移除了部分 Visual C++ 6 的解决方法。
    • hash_combine 的持续改进,这改变了先前为该函数记录的算法。
  • Interprocess:
  • Intrusive:
  • Lexical Cast:
    • 添加了 try_lexical_convert 函数,该函数在转换失败时返回 false 并且不需要输出参数是默认可构造的(#6700)。
    • 修复了字符串值带前导零转换为 bool 的问题(#9659)。
    • 代码已更改,以生成更小的二进制文件并简化编译器的处理(#9046)。
    • Boost.LexicalCast 库已从 Boost.Conversion 库中分离。
    • 修复了一些警告(#8991)。
  • Log:
    • 一般性更改
      • 对于 Windows 目标,该库现在默认编译为 Windows XP。
      • recordrecord_view 添加了带有 attribute_name 参数的索引运算符。
      • basic_formatting_ostream 添加了非 const 对象输出的运算符。(#9389
      • 添加了对将命名范围的函数名和源文件名放入格式化字符串的支持。(#9263
      • 为命名范围格式化器添加了对不完整和空标记的支持。(#9123
      • 不完整命名范围列表的默认表示形式已更改:已省略尾随范围分隔符。
      • 添加了对 std::regex 的支持头文件。
      • 默认情况下,Boost.Log 在内部使用 Boost.Regex 作为正则表达式后端。可以通过定义配置宏来更改后端。
    • 错误修复
      • 修复了 AVX2 启用 CPU(例如 Intel Haswell)上的 dump 操纵符输出。
      • 修复了记录器 get_attribute 方法的编译。
      • 修复了同步和异步接收器前端的 locked_backend() 函数实现中可能的竞争。
      • 修复了在使用 block_on_overflow 策略时,异步接收器入队方法中日志线程可能发生的无限阻塞。
    • 有关更多详细信息,请参阅 更改日志
  • 数学:
    • 破坏性更改:将许多主要用于内部维护的非核心头文件移至 libs/math/include_private。受影响的头文件是 boost/math/tools/test_data.hppboost/math/tools/remez.hppboost/math/constants/generate.hppboost/math/tools/solve.hppboost/math/tools/test.hpp。通过将 libs/math/include_private 添加到编译器的包含路径,您可以继续使用这些头文件。
    • 破坏性更改:一些分布和特殊函数返回最大有限值而不是引发 overflow_error,现在已修复,这意味着这些函数现在按文档记录的行为。然而,由于引发 overflow_error 的默认行为是抛出 std::overflow_error 异常,依赖这些函数不抛出异常的应用程序可能会遇到与以前不同的异常。涉及的特殊函数包括 gamma_p_inva、gamma_q_inva、ibeta_inva、ibetac_inva、ibeta_invb、ibetac_invb、gamma_p_inv、gamma_q_inv。涉及的分布包括 pareto_distrib、beta_distrib、geometric_distrib、negative_binomial_distrib、binomial_distrib、chi_squared_distrib、gamma_distrib、inverse_chi_squared_distrib、inverse_gamma_distrib。请参阅 #10111
    • 修复 round 和 trunc 函数,使它们可以与整数参数一起使用,请参阅 #10066
    • 修复 Halley 迭代以处理零导数(具有非零二阶导数),请参阅 #10046
    • 修复几何分布对 Policies 的使用,请参阅 #9833
    • 修复负二项分布的边界情况,请参阅 #9834
    • 修复 Mac OS 上的编译失败。
    • 添加了 bernoulli_numbers,将任意精度 tgamma/lgamma 更改为使用 Sterling 近似(来自 Nikhar Agrawal)。
    • 添加了贝塞尔函数的一阶导数:cyl_bessel_j_prime、cyl_neumann_prime、cyl_bessel_i_prime、cyl_bessel_k_prime、sph_bessel_prime 和 sph_neumann_prime(来自 Anton Bikineev)。
    • 修复了有缺陷的学生 t 示例代码,以及用于测试样本均值等价性的文档。
    • 更好地记录了根查找代码中的 max_iter 参数,请参阅 #9225
    • 添加选项以显式启用/禁用常量代码中 __float128 的使用,请参阅 #9240
    • 清理了 Bessel I0 和 I1 代码中对负值的处理(移除了死代码),请参阅 #9512
    • 修复了传递给 tgamma 和 lgamma 的非常小的值的处理,使其不会产生虚假的溢出(感谢 Rocco Romeo)。
    • #9672 拉普拉斯分布的 PDF 和 CDF 抛出 domain_error 随机变量现在可以为无穷大。
    • 在 Rocco Romeo 的帮助下,修复了 rising_factorial、falling_factorial 和 tgamma_delta_ratio 中的几个边界情况。
    • 移除了常量 pow23_four_minus_pi,其值与名称不匹配(并且 Boost.Math 未使用),请参阅 #9712
  • Move:
  • MPL:
    • boost::mpl::for_each 已启用,可在 GPU 上使用
  • MultiArray:
    • #5664 operator() 检查 Collection concept 但需要 RandomAccessCollection
    • #4874 在 debug 模式下使用 Visual C++ 2010 时编译错误
    • #3581 MultiArray 存储顺序示例对于 fortran_storage_ordering 不正确
    • #4032 将 MultiArray concepts 移出 detail 命名空间
    • #9212 C++ 标准论文链接错误
    • #8368 GCC -Wundef 警告关于 multi_array 中的 BOOST_MULTI_ARRAY_NO_GENERATORS
  • 多索引容器:
    • 哈希索引的 erase(iterator) 成员函数在低负载条件下性能较差,因为要求返回下一个元素的迭代器(请参阅 #4264)。根据 LWG issue #579 的决议,此问题已修复,同时保持 erase 的接口,但代价是每个元素使用一个额外的内存。事实上,无序关联容器的 C++ 复杂度要求已针对哈希索引得到改进,因此
      • 给定元素的删除是无条件常数时间,
      • 最坏情况性能不是 O(n),而是 O(ndist),其中 ndist 是索引中非等价元素的数量。
      由于散列索引依赖于新的数据结构,其迭代器和局部迭代器的内部表示已更改,这会影响序列化:其对应的序列化 类版本 已从 0 提升到 1。涉及散列索引(局部)迭代器的旧存档可以通过 Boost.MultiIndex 的 Boost 1.56 版本加载,但反之则不行。
    • 散列索引现在提供 reserve
    • 散列索引现在可以根据 [unord.req] 中(已适当调整的)C++ 标准规范进行相等和不等比较。
    • Boost.MultiIndex 的公共接口在适当的地方提供了 noexcept 规范(对于兼容的编译器)。
    • 改进了向 multi_index_container 插入失败的性能。
    • 已移除大量用于支持 MSVC++ 7.0 及更早版本的内部代码。不包含此遗留代码的编译时间可能会稍快一些。
    • 修复了通过解引用到右值的迭代器进行插入时的错误(工单 #9665)。
    • 使 Boost.MultiIndex 与 BOOST_BIND_NO_PLACEHOLDERS 兼容(工单 #9798)。
    • 维护修复。
  • Multiprecision:
    • 将浮点数转换为有理数的转换改为隐式,请参阅 10082
    • 修复了 checked_cpp_rational typedef 的定义。
    • 修复了 cpp_int 中从字符串赋值的错误,请参阅 9936
    • 添加了新的 cpp_bin_float 后端用于二进制浮点数。
    • 修复了 cpp_int 中从字符串赋值的错误,请参阅 9936
    • 为编译器内部函数添加了 MSVC 特定 #include,请参阅 9336
    • 修复了文档中的各种拼写错误,请参阅 9432
    • 修复了 gmp_rational 以允许从已复制的对象进行移动复制,请参阅 9497
    • 添加了 numeric_limits 的值列表。
  • Odeint:
    • 添加了代数和操作分派器,用于自动检测合适的代数和操作。
    • 添加了对 Eigen、Boost.Multiarray、Boost.Mpi、Boost.Compute、Blaze 和 NT2 的支持。
    • 更改了代数接口以使用 algebra.norm_inf 函数。
    • 添加了用于迭代常微分方程解的迭代器,从而提供了 integrate 函数的替代方案。
    • 添加了速度-Verlet 方法。
    • 小的 bug 修复。
  • Optional:
    • 添加了对右值引用的支持。现在 optional<T> 可以与可移动但不可复制的 T 一起工作。
    • 改进了 swap(现在使用移动操作)。
    • 添加了 emplace() 函数。这是来自 #1841 的最后一个请求。
    • optional 是可移动的,包括条件性的 noexcept 规范,这使其对 move_if_noexcept 友好。
    • 在支持的平台上使用显式 operator bool()(#4227)(重大更改)。
    • 前向声明 operator<<(ostream&, optional const&) 以防止无意中错误地序列化 optional 对象。
    • 从示例中移除了已弃用的函数 reset()#9005)。
    • boost::none 的相等比较不需要 T 是 EqualityComparable。
    • 显式禁止 optional 右值引用。
    • 显式禁止将临时变量绑定到 optional 引用(重大更改)。
    • 访问所包含值的方法更多,函数有 value()value_or()value_or_eval()
    • 更新并重新组织了文档,添加了教程和快速入门指南部分。
  • Predef:
    • 添加了 MinGW 和 Windows 平台变体的 BOOST_PLAT_* 平台定义。
    • 检测 Windows 编译器的 ARM 架构,以针对 Windows 8 的移动设备。
    • 改进了 64 位 ARM 的 ARM 检测。
    • 添加了对 iOS 作为操作系统的检测。
    • 改进了在某些平台上的字节序检测。
    • 添加了独占加模拟定义,用于平台和编译器检测。
  • 预处理器:
    • 使用可变参数宏时,添加了 tuple 功能以匹配所有数组功能。
  • Program Options:
    • --help 输出中的列现在会在所有选项组之间对齐(#6114)。
    • 选项名称中的连字符在错误消息中不再被截断(#8009)。
  • Regex:
    • 重大更改: 修正了 basic_regex<>::mark_count() 的行为,使其与现有文档一致,basic_regex<>::subexpression(n) 已更改以匹配,请参阅 #9227
    • 修复了问题 #8903
    • 修复了来自 #9283 的文档拼写错误。
    • 修复了排序代码中如果 locale 生成的排序字符串包含嵌入的 nul 字符则失败的错误,请参阅 #9451
    • 应用了关于不寻常线程使用(无静态初始化的互斥量)的补丁,请参阅 #9461
    • 添加了对无效 UTF-8 序列的更好检查,请参阅 #9473
  • 智能指针:
    • 更新了数组类型(T[]T[N])的 make_sharedallocate_shared 重载,以符合 C++ 标准论文 N3939 中的规范,并显著减小了内部簿记结构的内存开销。
    • 更新了标量类型和数组类型的 make_shared 和 allocate_shared 实现,以解决 C++ 标准库缺陷报告 #2070
  • Thread:
    • 新的实验性功能
      • #7446 Async: 添加 when_any。
      • #7447 Async: 添加 when_all。
      • #7448 Async: 添加接受调度器参数的 async。
      • #8274 Synchro: 添加并发队列
      • #8513 Async: 添加基本的 thread_pool 执行器。
      • #8518 Synchro: 添加 latch 类。
      • #8516 Async: 添加接受调度器作为参数的 future/shared_future::then。
      • #9058 with_lock_guard 函数
      • #9571 添加动态执行器和执行器适配器
    • 已修复的 Bug
      • #8070 优先使用 GetTickCount64 而非 GetTickCount
      • #9333 ex_scoped_thread 在 msvc-12.0 上编译失败
      • #9341 编译错误 scoped_thread(move semantics) intel-linux-14.0.1
      • #9366 async(Executor, ...) 在 msvc-10,11,12 上编译失败
      • #9402 test_excutor 在 msvc-10,11,12 上回归
      • #9404 ex_make_future 回归错误
      • #9471 同步文档小问题
      • #9535 缺少异常安全可能导致崩溃
      • #9618 try_join_for 问题:程序未终止。
      • #9625 请重写 boost::thread::~thread() 参考部分
      • #9632 boost::thread 类中的公共方法 start_thread
      • #9673 在 Windows 上使用 MingW/gcc 编译 thread 时出现错误
      • #9708 boost::condition_variable::timed_wait 意外唤醒,本应无限等待
      • #9711 future 继续被调用两次
      • #9867 移除对 gcc-mingw 的引用
      • #10008 Boost 同步文档拼写错误(futures)
      • #10058 一次性初始化中的空指针访问
      • #10125 call_once:可变版本在右值引用模拟时出现编译错误
      • #10126 call_once:弃用 (Function, once_flag&) 重载
      • #10147 pthread_delay_np() 参数在 AIX 上不同,即使使用 gcc
      • #10155 thread::physical_concurrency() 在 PowerPC 上始终返回 0
      • #10184 Future:多次定义符号
  • TR1:
    • 此库现已弃用。
  • TTI:
    • 工单 #9441:为 Sun Solaris Studio C++ 编译器添加了更好的支持。
    • 工单 #9444:处理包含类不是类类型的各种情况。
  • Unordered:
    • 小的文档和警告修复(#9377#9719)。
    • 始终为整数使用素数桶数。修复了插入连续整数时的性能回归(#9282)。
    • 仅使用分配器构造元素,如 C++11 标准所规定。
  • Utility:
    • 一些组件已移至新的 Boost.Core 库。
    • empty_deleter 已弃用,推荐使用 Boost.Core 中的 null_deleterempty_deleternull_deleter 的别名,将在未来的版本中移除。
    • base_from_member 工具现在支持左值引用成员类型。(#7577
  • UUID:
    • 添加了对 C++11 特性的基本支持。
    • 实现了 uuid 的一些函数的 SSE 优化版本,包括比较运算符和 swap。大多数编译器会自动检测对不同 SSE 版本的支持,但也可以通过 配置宏 显式启用或禁用。(#8509
    • 抑制了一些编译器警告。(#8495#8697
  • Variant:
    • 重大更改: Variant 现在使用可变模板(如果编译器支持)。这会导致更小的二进制文件和更好的编译时间,但在某些情况下可能会破坏元编程函数,特别是如果没有使用 BOOST_VARIANT_ENUM_PARAMSBOOST_VARIANT_ENUM_SHIFTED_PARAMS。可以使用 禁用 可变模板的使用。
    • 添加了 polymorphic_get 函数(#9479)。
    • 现在可以通过访问者返回仅移动类。
    • 优化了 variant::swap() 并修复了 move_swap 中的歧义(#2839)。
    • 为移动赋值、默认构造函数和移动构造函数添加了条件 noexcept,使 boost::variantmove_if_noexcept 友好(#7911)。
    • 即使使用 -fvisibility=hidden 标志,异常现在也可以跨模块可见。
    • 放弃了对旧编译器的支持。
    • 修复了一些警告(#3020)。

测试的编译器

Boost 的主要测试编译器是:

  • Linux
    • Clang: 3.4, 3.3, 3.2, 3.1, 3.0
    • Clang, C++98: 3.3.16
    • Clang, C++11, libc++: 3.4.2
    • Clang, C++1y: 3.3.16
    • GCC: 4.8.2, 4.8.1, 4.7.3, 4.6.4, 4.4.7
    • GCC, C++98: 4.9.0
    • GCC, C++11: 4.8.2
    • GCC, C++1y: 4.9.0
    • Intel: 13.1
  • OS X
    • Apple Clang: 5.1
    • Apple Clang, C++11: 5.1
    • GCC: 4.2.1
    • Intel: 12.0
  • Windows
    • GCC, mingw: 4.9.0, 4.8.2, 4.7.3, 4.7.2, 4.6.3, 4.5.4, 4.4.7
    • Visual C++: 12.0, 11.0, 10.0, 9.0
  • FreeBSD
    • GCC: 4.2.1
  • QNX
    • QCC: 4.4.2

Boost 的其他测试编译器包括:

  • Linux
    • Clang: 3.4, 3.3, 3.2, 3.1, 3.0
    • Clang, C++98: 3.3.16
    • Clang, C++11, libc++: 3.4.2
    • Clang, C++1y: 3.3.16
    • Clang, C++14, libc++: trunk
    • GCC: 4.8.2, 4.8.1, 4.7.3, 4.6.4, 4.4.7
    • GCC, C++98: 4.9.0
    • GCC, C++11: 4.9.0, 4.8.2
    • GCC, C++1y: 4.9.0
    • Intel: 13.1, 13.0, 12.1, 11.1
  • OS X
    • Apple Clang: 5.1
    • Apple Clang, C++11
    • Clang: trunk
    • Clang, C++11: trunk
    • GCC: 4.2.1
    • Intel: 12.0
  • Windows
    • GCC, mingw: 4.9.0, 4.8.2, 4.7.2, 4.6.3, 4.5.4, 4.4.7
    • Visual C++: 12.0, 11.0, 10.0, 9.0
  • FreeBSD
    • GCC: 4.2.1
  • QNX
    • QCC, ARM: 4.4.2
    • QCC, x86: 4.4.2

致谢

Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了此次发布。

贡献者

Michael Stevens
Michael Stevens
贡献者
Daniel James
Daniel James
贡献者
John Maddock
John Maddock
贡献者
Andrey Semashev
Andrey Semashev
贡献者
Eric Niebler
Eric Niebler
贡献者
Adam Wulkiewicz
Adam Wulkiewicz
贡献者
Menelaos Karavelas
Menelaos Karavelas
贡献者
Jeremiah Willcock
Jeremiah Willcock
贡献者
Karsten Ahnert
Karsten Ahnert
贡献者
Barend Gehrels
Barend Gehrels
贡献者
Vicente J. Botet Escriba
Vicente J. Botet Escriba
贡献者
Peter Dimov
Peter Dimov
贡献者
Stephen Kelly
Stephen Kelly
贡献者
Oliver Kowalke
Oliver Kowalke
贡献者
Mario Mulansky
Mario Mulansky
贡献者
Steven Watanabe
Steven Watanabe
贡献者
Gunter Winkler
Gunter Winkler
贡献者
Joel de Guzman
Joel de Guzman
贡献者
Marshall Clow
Marshall Clow
贡献者
Christopher Kohlhoff
Christopher Kohlhoff
贡献者
Ion Gaztañaga
Ion Gaztañaga
贡献者
John Fletcher
John Fletcher
贡献者
Emil Dotchevski
Emil Dotchevski
贡献者
Hartmut Kaiser
Hartmut Kaiser
贡献者
Beman Dawes
Beman Dawes
贡献者
Joaquin M. López Muñoz
Joaquin M. López Muñoz
贡献者
Lorenzo Caminiti
Lorenzo Caminiti
贡献者
Vladimir Prus
Vladimir Prus
贡献者
David Bellot
David Bellot
贡献者
Neil Groves
Neil Groves
贡献者
Glen Fernandes
Glen Fernandes
贡献者
Antony Polukhin
Antony Polukhin
贡献者
Robert Ramey
Robert Ramey
贡献者
Tim Blechmann
Tim Blechmann
贡献者
Frank Mori Hess
Frank Mori Hess
贡献者
Douglas Gregor
Douglas Gregor
贡献者
Michael A. Jackson
Michael A. Jackson
贡献者
Christopher Kormanyos
Christopher Kormanyos
贡献者
Andrii Sydorchuk
Andrii Sydorchuk
贡献者
Troy D. Straszheim
Troy D. Straszheim
贡献者
Rene Rivera
Rene Rivera
贡献者
Christophe Henry
Christophe Henry
贡献者
Jörg Walter
Jörg Walter
贡献者
Agustin Berge
Agustin Berge
贡献者
Michel Morin
Michel Morin
贡献者
Daniel Walker
贡献者
Jonathan Turkanis
Jonathan Turkanis
贡献者
Thorsten Jørgen Ottosen
Thorsten Jørgen Ottosen
贡献者
Edward Diener
Edward Diener
贡献者
Andrzej Krzemieński
Andrzej Krzemieński
贡献者
Gennaro Prota
贡献者
Niels Dekker
贡献者
Toon Knapen
Toon Knapen
贡献者
K. Noel Belcourt
K. Noel Belcourt
贡献者
Paul A. Bristow
Paul A. Bristow
贡献者
Ronald Garcia
Ronald Garcia
贡献者
Sebastian Redl
Sebastian Redl
贡献者
Pascal Germroth
贡献者
Thomas Heller
Thomas Heller
贡献者
Bryce Adelstein-Lelbach
Bryce Adelstein-Lelbach
贡献者
Luke Simonson
Luke Simonson
贡献者
Jürgen Hunold
Jürgen Hunold
贡献者
Matthias Troyer
Matthias Troyer
贡献者
Joel Falcou
Joel Falcou
贡献者
Bruno Lalande
Bruno Lalande
贡献者
Samuel Debione
Samuel Debione
贡献者
Jens Maurer
Jens Maurer
贡献者
Dave Abrahams
Dave Abrahams
贡献者
Nathan Ridge
Nathan Ridge
贡献者
insideoutclub
insideoutclub
贡献者
AntonBikineev
AntonBikineev
贡献者
Andy Tompkins
Andy Tompkins
贡献者
Jeff Garland
Jeff Garland
贡献者
Sascha Ochsenknecht
贡献者
Denis Davydov
Denis Davydov
贡献者
Ahmed Charles
Ahmed Charles
贡献者
Anthony Williams
贡献者
Steve Gates
Steve Gates
贡献者
Matei David
Matei David
贡献者
alankelly
alankelly
贡献者
Maxim Ivanov
Maxim Ivanov
贡献者
Aleksey Gurtovoy
贡献者
Tobias Schwinger
Tobias Schwinger
贡献者
Matias Capeletto
Matias Capeletto
贡献者
Mateusz Łoskot
Mateusz Łoskot
贡献者
Artyom Beilis
Artyom Beilis
贡献者
Andreas Huber
贡献者
Lee Clagett
Lee Clagett
贡献者
Marcel Raad
Marcel Raad
贡献者
Nicholas Edmonds
Nicholas Edmonds
贡献者
Jeffrey Lee Hellrung, Jr.
Jeffrey Lee Hellrung, Jr.
贡献者
Mario Lang
Mario Lang
贡献者
Noel Belcourt
Noel Belcourt
贡献者
Daryle Walker
Daryle Walker
贡献者
Guillaume Melquiond
Guillaume Melquiond
贡献者
Alexander Nasonov
Alexander Nasonov
贡献者
Helge Bahmann
Helge Bahmann
贡献者
Gennadiy Rozental
Gennadiy Rozental
贡献者
David Jenkins
David Jenkins
贡献者
Markus Schöpflin
贡献者
Samuel Krempp
贡献者
Robert Kawulak
Robert Kawulak
贡献者
jofaber
jofaber
贡献者
Ben Hanson
贡献者
Jurko Gospodnetić
Jurko Gospodnetić
贡献者
Christopher Schmidt
贡献者
Joachim Faulhaber
Joachim Faulhaber
贡献者
BenPope
BenPope
贡献者
Richard Dale
Richard Dale
贡献者
Frédéric Bron
Frédéric Bron
贡献者
Franz Detro
Franz Detro
贡献者
Jeremy Siek
Jeremy Siek
贡献者
David Deakins
David Deakins
贡献者
Christopher Jefferson
Christopher Jefferson
贡献者
Jamboree
Jamboree
贡献者
Nasos
Nasos
贡献者
Kohei Takahashi
Kohei Takahashi
贡献者
Ralf W. Grosse-Kunstleve
贡献者
Boris Gubenko
贡献者
Thomas Bernard
Thomas Bernard
贡献者
David Dean
贡献者
Caleb Epstein
贡献者
nobody
贡献者
Niall Douglas
Niall Douglas
贡献者
Agustín K-ballo Bergé
Agustín K-ballo Bergé
贡献者
Fernando Cacciola
Fernando Cacciola
贡献者
Daniela Engert
Daniela Engert
贡献者
Giovanni Bajo
Giovanni Bajo
贡献者
Kyle Lutz
Kyle Lutz
贡献者
Mathias Gaunard
Mathias Gaunard
贡献者
Jan Kundrát
Jan Kundrát
贡献者
Baptiste Wicht
Baptiste Wicht
贡献者
Jaakko Järvi
贡献者
Nicola Musatti
Nicola Musatti
贡献者
Paul
Paul
贡献者
Cosmin Boaca
贡献者
Alisdair Meredith
Alisdair Meredith
贡献者
Nat Goodspeed
Nat Goodspeed
贡献者
David
贡献者
Larry Joe Evans
贡献者
Kirk Shoop (MS OPEN TECH)
贡献者
U-Acer-Laptop\john
贡献者
Nikhar Agrawal
Nikhar Agrawal
贡献者
Yuri Khan
贡献者
Darin Adler
贡献者
sehe
sehe
贡献者
Andrew Sutton
Andrew Sutton
贡献者
Michael Caisse
Michael Caisse
贡献者
Pieter Bastiaan Ober
Pieter Bastiaan Ober
贡献者
Gordon Woodhull
Gordon Woodhull
贡献者
Brandon Kohn
Brandon Kohn
贡献者
Thomas Klausner
Thomas Klausner
贡献者
Alexey Stukalov
贡献者
Daniel James
Daniel James
贡献者
Ruslan Baratov
Ruslan Baratov
贡献者
Frederick Akalin
贡献者
Ed Catmur
Ed Catmur
贡献者
Chris Stylianou
Chris Stylianou
贡献者
fix-copyright.py
贡献者
Janusz Lewandowski
Janusz Lewandowski
贡献者
Maks Naumov
Maks Naumov
贡献者
Stephan Diederich
Stephan Diederich
贡献者
Ciro Santilli
Ciro Santilli
贡献者
Aaron Windsor
Aaron Windsor
贡献者
ccbrown
ccbrown
贡献者
Axel Ismirlian
Axel Ismirlian
贡献者
Claudio Bley
Claudio Bley
贡献者
Peter A. Bigot
Peter A. Bigot
贡献者
Stefan Seefeld
Stefan Seefeld
贡献者
Andreas Angelopoulos
Andreas Angelopoulos
贡献者
Rhys Ulerich
Rhys Ulerich
贡献者
Roland Schwarz
Roland Schwarz
贡献者
Boleslaw Ciesielski
Boleslaw Ciesielski
贡献者
Avi Kivity
Avi Kivity
贡献者
Christoph Koke
贡献者
Adam Romanek
Adam Romanek
贡献者
wschreyer
wschreyer
贡献者
Paul Mensonides
Paul Mensonides
贡献者
Sam Spilsbury
Sam Spilsbury
贡献者
Petr Machata
贡献者
Eric Friedman
贡献者
Denis Mingulov
Denis Mingulov
贡献者
Zach Laine
Zach Laine
贡献者
Stjepan Rajko
贡献者
Alexander Bogdashevsky
Alexander Bogdashevsky
贡献者
Sylwester Arabas
Sylwester Arabas
贡献者