Boost C++ 库

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

版本 1.74.0

版本 1.74.0

2020 年 8 月 14 日 05:02 GMT

文档

下载
平台文件SHA256 哈希
unixboost_1_74_0.tar.bz283bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
boost_1_74_0.tar.gzafff36d392885120bcac079148c177d1f6f7730ec3d47233aa51b0afa4db94a5
windowsboost_1_74_0.7z903fd40074de8dc733d2f0b6b0642e43b714653eaeb79289b12161b9567fae97
boost_1_74_0.zipa0e7ce67c52d816708fdeccdd8c9725626ba61254c13c18770498cacd514710a
* 下载链接由 C++ 联盟 的拨款支持。

新库

  • STLInterfaces: 一个 CRTP 基类库,用于简化 STL 视图、迭代器和序列容器的编写,作者是 Zach Laine。

更新的库

  • Asio:
    • 添加了建议的标准执行器的实现 (P0443r13, P1348r0, 和 P1393r0)。
    • 为 Asio 的 I/O 功能添加了对建议的标准执行器的支持。
      • 提供的执行器现在满足建议的标准执行器的要求。这些类也继续满足现有 Networking TS 执行器模型的要求。
      • 所有 I/O 对象、异步操作和实用程序都将与新的建议标准执行器以及现有的 Networking TS 执行器互操作。
      • 引入了 any_io_executor 类型别名,作为所有 I/O 对象的默认运行时多态执行器。默认值为 execution::any_executor<> 模板。如果需要向后兼容,可以定义 BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 以使用旧的 asio::executor 多态包装器。
      • 可以通过定义 BOOST_ASIO_NO_TS_EXECUTORS 来禁用对现有 Networking TS 执行器模型的支持。
    • 添加了到 basic_waitable_timer 的转换移动构造和赋值。
    • 在使用以下编译器时启用 C++20 协程支持gcc 10.
    • 添加了启动可等待对象的 co_spawn 重载。
    • use_awaitable_t 的默认执行器适配器添加了新的构造函数重载,以实现执行器类型之间的转换。
    • 通过添加成员 as_default_on()as_default_on_t<>,添加了对使用 detached_t 作为默认完成令牌的支持。
    • ssl::stream<> 添加了移动构造函数。
    • ssl::stream<> 写入操作更改为线性化收集写入缓冲区序列。
    • 在定义 BOOST_ASIO_NO_DEPRECATED 时,添加了对已弃用的 asio_handler_invokeasio_handler_allocateasio_handler_deallocate 钩子的编译时检测。
    • 实施了许多性能优化。
    • 为处理程序跟踪添加了源位置支持。
    • 对以下工具进行了各种改进handlerviz.pl工具。
    • 添加了handlerlive.pl工具,该工具处理处理程序跟踪输出以生成“活动”处理程序的列表。
    • 添加了handlertree.pl工具,该工具过滤处理程序跟踪输出,仅包括生成指定处理程序的树中的那些事件。
    • 为基于 clang 的 Embarcadero C++ 编译器添加了更改。
    • 修复了当多个线程同时初始化 Windows I/O 完成端口后端时可能发生的死锁。
    • 修复了当按左值传递时,async_compose 与可复制处理程序一起工作的问题。
    • 修复了 co_spawn 中的完成签名推导。
    • executor_binder 实现中删除了伪造的 Executor 基类。
    • 文档和示例中的各种修复和改进。
    • 请查阅 修订历史 以获取更多详细信息。
  • 原子操作:
    • atomic_ref 中的某些操作添加了缺少的 const 限定符。
    • 为 ARMv8-A 添加了对 yield 指令的支持。该指令在自旋循环中内部使用,以降低 CPU 功耗。
    • 添加了对 C++20 等待和通知操作的支持。该实现包括涉及内部锁池的通用后端,以及适用于 Windows、Linux、FreeBSD、DragonFly BSD 和 NetBSD 的专用后端。原子类型提供了一个新方法 has_native_wait_notify、一个静态布尔常量 always_has_native_wait_notify 和一组功能宏,用于检测给定类型的实现是否支持本机等待和通知操作。
    • 更改了 atomic_flag 的内部表示,以使用 32 位存储。这允许在某些平台上对 atomic_flag 进行更有效的等待和通知操作。
    • 添加了对内部锁池大小的构建时配置的支持。用户可以定义 BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2 宏来指定锁池大小的二进制对数。默认值为 8,这意味着锁池的大小为 256,高于先前版本中使用的 64。
    • 添加了对一组新的原子类型的支持,这些类型专用于 进程间通信ipc_atomic_flagipc_atomicipc_atomic_ref。建议用户将使用非 IPC 类型进行进程间通信的代码移植到新类型。新类型提供与其非 IPC 类型相同的操作集,但有以下差异
      • 大多数操作都添加了一个前提条件,即 is_lock_free 为给定的原子对象返回 true。如果已知此前提条件在编译时未满足,则库将发出编译时错误。
      • 所有提供的操作都是无地址的,这意味着原子对象(在 ipc_atomic_ref 的情况下 - 引用的对象)可能位于进程共享内存中,或者以多个不同的地址映射到同一进程中。
      • 新的 has_native_wait_notify 操作和 always_has_native_wait_notify 常量指示对本机进程间等待和通知操作的支持。如果不存在该支持,则使用忙循环来实现这些操作,这效率较低,但仍然是无地址的。还提供了一组单独的功能宏来指示此支持。
    • 添加了 C++20 中引入的新 atomic_unsigned_lock_freeatomic_signed_lock_free 类型。这些类型分别指示无锁且最好具有对等待和通知操作的本机支持的无符号或有符号整数的原子对象类型。
    • 为 ARMv8-A(适用于 AArch32 和 AArch64)添加了新的 gcc 汇编程序后端。新的后端用于实现编译器内部函数不支持的操作(包括 AArch64 上的 128 位操作),并且还可以在编译器内部函数不可用时使用。支持小端和大端目标。AArch64 后端支持 ARMv8.1 和 ARMv8.3 中定义的扩展。
    • 在基于 gcc 汇编程序块的传统 ARM 后端中添加了对大端目标的支持(此后端在 ARMv7 和更旧的目标上使用)。以前,后端假设小端内存布局,这对 64 位操作很重要。
    • 通过使用 lock 前缀指令而不是 mfence,提高了 x86 上 seq_cst 存储和线程栅栏的性能。这意味着这些操作不再影响非临时存储,这在之前也没有保证。使用专门的指令和内部函数来排序非临时内存访问。
    • 修复了 x86 目标上 80 位 long double 的功能宏,即使 128 位原子操作可用,也没有指示无锁操作。
    • 修复了在 Alpha 目标上编译 gcc asm 块的问题。
    • 在 gcc __sync* 内部函数后端中,修复了大型对象(大于指针大小)的存储和加载操作可能不是原子操作的问题。该实现目前假设小型对象可以在所有现代架构上通过单个指令原子存储。
  • Beast:
    • 此更新带来了错误修复和对 Boost.Asio 中以下更改的支持
    • Beast 支持 BOOST_ASIO_NO_DEPRECATED。定义此项有助于识别你的 Beast 和 Asio 代码中使用了已弃用的 Asio 接口的区域。
    • Beast 还支持 BOOST_ASIO_NO_TS_EXECUTORS。定义此项可识别现在可能过时的 Networking TS 中执行器的用法
    • Asio 默认将使用 标准执行器 模型。你可以通过定义 BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 来阻止此行为,在该行为中,将默认使用 Networking TS 模型。设置此标志不会阻止程序显式使用标准执行器模型的执行器。
    • 我们很想知道你或你的公司如何使用 Beast,请考虑在 使用 Beast 的公司和个人列表中添加一个条目。
    • 请参阅完整的 发行说明,了解更改的完整列表。
  • Bimap:
    • 正确的分配器用法(修复 C++20 编译)。 (Glen Fernandes)
  • 配置:
    • 实现 BOOST_NO_CXX11_OVERRIDEBOOST_OVERRIDE。 (Glen Fernandes)
  • 核心:
    • 实现了分配器访问实用程序,该实用程序为每个工具提供 allocator_traits 的替代方法,其中包含单独的特征和函数。它们尽可能支持 C++11 分配器模型,并为 C++98 兼容性提供后备。这些现在用于 Circular_Buffer、Wave、Lockfree、Heap、Smart_Ptr、Dynamic_Bitset、Format、Bimap 等中。 (Glen Fernandes)
  • DLL:
    • 针对空共享对象上的 library_info 工作进行了多次修复。
    • C++98 和 C++11 模式的编译修复 (#28)。
    • 修复了 smart_library 命名混乱 (感谢 XiaLiChao82 #37)。
  • Endian:
    • endian_reverse 中启用了范围枚举类型。
    • endian_reverse_inplace 中启用了 boolenumfloatdouble
    • 为数组添加了 endian_reverse_inplace 的重载。
  • 文件系统:
    • 删除了对 Windows 上对符号链接和硬链接支持的编译时检查。相反,使用运行时检查。 (PR#142)
    • 修复了 Windows 上 canonicalread_symlink 中对重解析点的处理。这也影响到其实现中涉及 canonicalread_symlink 的其他算法。 (PR#100, #85, #99, #123, #125)
    • 修复了如果在同一符号链接被并发打开时,Windows 上的 read_symlink 可能会失败或在其他地方导致共享冲突错误的问题。 (#138)
    • 修复了 is_symlink(directory_entry) 总是返回 false 的问题,即使目录项实际上指向一个符号链接。(PR#148
    • directory_entryerror_code 添加了缺失的状态检查操作重载(例如 is_directory(directory_entry, error_code&))。移除了不接受 error_code 参数的重载中不正确的 noexcept 规范。
    • copy_file 的实现已更新,以按照 C++20 的要求 ([fs.op.copy.file]/4.1) 对源文件和目标文件执行检查。特别是,如果源文件或目标文件不是常规文件,或者源路径和目标路径标识的是同一文件,则操作将失败。
    • 在 POSIX 系统上,如果目标文件被覆盖,copy_file 现在还会将源文件权限复制到目标文件。
    • 新增:在 Linux 上添加了基于 sendfilecopy_file_range 系统调用的 copy_file 实现,这可以提高文件复制性能,尤其是在网络文件系统上。
    • 已弃用:copy_file 操作一起使用的 copy_option 枚举已弃用。作为替代,添加了新的枚举 copy_options(注意末尾的 's')。新枚举包含类似于 C++20 中 copy_options 枚举的值。旧的枚举值会映射到新的枚举。旧的枚举将在未来的版本中移除。
    • 新增:添加了 copy_options::skip_existing 选项,如果目标文件存在,该选项允许 copy_file 操作成功而不会覆盖目标文件。
    • 新增:添加了 copy_options::update_existing 选项,如果目标文件存在,并且其最后写入时间比替换文件旧,则该选项允许 copy_file 操作有条件地覆盖目标文件。
    • 新增:copy_file 现在返回 bool,指示文件是否被复制。
    • 新增,重大更改:copy 操作已扩展和重构,以实现 C++20 [fs.op.copy] 中指定的行为。这包括支持 copy_options::recursivecopy_options::copy_symlinkscopy_options::skip_symlinkscopy_options::directories_onlycopy_options::create_symlinkscopy_options::create_hard_links 选项。该操作会根据指定的选项执行其他检查。将 copy 应用于具有默认 copy_options 的目录,现在也会复制该目录中的文件(但不包括嵌套目录或这些目录中的文件)。
    • 新增:添加了接受两个路径的 create_directory 重载。第二个路径是指向现有目录的路径,该路径用作创建目录时使用的权限属性的来源。
    • 已弃用:copy_directory 操作已弃用,赞成使用新的 create_directory 重载。请注意,这两个操作的路径参数顺序相反。
    • 在 POSIX 系统上,如果其中一个路径无法解析为文件,equivalent 现在会返回来自操作系统的实际错误代码。以前,该函数会返回错误代码 1。(#141
    • equivalent 不再考虑文件大小和最后修改时间,以测试两个路径是否指向同一文件。如果在 equivalent 调用期间修改了文件,这些检查可能会导致误报。
    • 新增:添加了接受 error_code 参数的 absolute 重载。
    • 具有 current_path() 作为其参数默认值,并且还具有 error_code 参数的操作,将使用 current_path(error_code& ec) 重载来获取当前路径,以便通过 error_code 参数报告其失败,而不是抛出异常。
    • space 现在会在出错时将 space_info 结构成员初始化为 -1 值,如 C++20 ([fs.op.space]/1) 的要求。
    • 在 Windows 上,space 现在接受指向任意文件的路径,而不仅仅是目录。这类似于 POSIX 系统,并符合 C++20 中的操作描述。(#73
    • 新增:为 Windows CE 添加了 temp_directory_path 的实现。(PR#25
    • 新增:改进了与 WASI 平台的兼容性。(PR#144
    • 新增:改进了对 Embarcadero 编译器的支持。(PR#130
    • 新增:添加了基于 getrandom (Linux)、arc4random_buf (OpenBSD/FreeBSD/CloudABI) 和 BCrypt (Windows) 系统 API 的 unique_path 操作的实现。
    • 已弃用:在 Windows 上使用 MSVC 兼容的编译器自动链接系统库已弃用,并将在未来的版本中移除。这会影响链接 Boost.Filesystem 静态库的用户。建议用户更新其项目构建系统,以使用 Boost.Filesystem 的共享库,或者在链接器命令行中显式指定 Boost.Filesystem 的依赖项。Boost.Filesystem 共享库的用户不受影响。
  • 轻量级:
    • 维护工作。
  • 格式:
    • 正确的分配器用法(修复 C++20 编译)。 (Glen Fernandes)
  • 几何:
    • 改进
      • PR#720 额外的 R 树构造函数(感谢 Caian Benedicto)。
      • 缓冲区、集合和关系操作中的各种改进。
    • 已解决的问题
      • #709 为没有简单复制赋值的对象调用 memcpy。
      • #721 bgi::detail::rtree::visitors::insert 中的编译错误。
      • #727 MSVC 警告:条件表达式是常量。
    • 错误修复
      • PR#700 距离算法中默认策略的缺失案例。
      • PR#738 直接大地测量公式中的经度超出范围。
  • GIL:
    • 已添加
      • 添加了新的构造函数,用于从任何图像的右值引用初始化 any_image (PR#486)。
      • 实现了反转 kernel_2d 的机制 (PR#489)。
    • 已更改
      • 重大更改:用 Boost.Variant2 替换 Boost.Variant (PR#474),这完成了对 Boost.MPL 的使用删除(Boost 1.72.0 中缺失的更改已添加 PR#274)。
      • 使用来自 apply_operation 的完美转发来访问 (PR#491)。
    • 已删除
      • 重大更改:移除了对 Boost.Variant 的依赖
    • 已修复
      • 修复了由于溢出导致的从 RGB8 到 CMYK32 的无效转换 (PR#470)。
      • 修复了来自其他图像的 image 构造函数 (PR#477)。
      • 修复了错误 plane_view_t 不是类或命名空间名称 (PR#481)。
      • 修复了使用 point<std::ptrdiff_t> 作为维度的 interleaved_view 工厂 (PR#487)。
      • 修复了文档,将教程中 MPL 的使用替换为 MP11 (PR#494)。
      • 修复了 numeric/kernel.hpp 中缺失的头文件,使其成为自包含的 (PR#502)。
    • 致谢
      • Samuel Debionne、Pranam Lashkari、Mateusz Loskot、Debabrata Mandal
  • :
    • 正确销毁 skew_heap 中的顶部节点。(Glen Fernandes)
    • 正确并简化分配器的使用。(Glen Fernandes)
  • 整数:
    • 修复了在 clang 10 的 C++20 模式下 gcd 的编译。
    • 改进了对 Embarcadero 编译器的支持。(PR#21
  • 迭代器:
    • boost/function_output_iterator.hpp 头文件现已弃用。用户应将其包含替换为 boost/iterator/function_output_iterator.hpp。(PR#51
    • 改进了对 Embarcadero 编译器的支持。(PR#55
  • 词法转换:
    • 修复了缺少 override 的警告(感谢 EugeneZelenko #35, #34)。
    • 修复了 Embarcadero 编译器的问题(感谢 Edward Diener)。
  • 日志:
    • 错误修复
      • syslog sink 后端现在会验证用户设置的本地和目标地址的 IP 版本。这些地址必须与 sink 后端构造时在 ip_version 命名参数中指定的 IP 版本相同(默认情况下,假定为 IPv4)。当通过主机名解析获得地址时,只考虑具有匹配 IP 版本的地址。(#119
    • 新特性
      • 各种组件的移动构造函数和赋值运算符都被标记为 noexcept
      • 添加了一个新的 range_manip 流操作器,可用于输出范围内的元素,可以选择用分隔符分隔。
      • 添加了一个新的 tuple_manip 流操作器,可用于输出元组或任何其他异构序列的元素,可以选择用分隔符分隔。
      • 添加了一个新的 optional_manip 流操作器,可用于输出可选存在的值。
    • 有关详细信息,请参阅 变更日志
  • Mp11:
    • 提高了大型 Nmp_with_index<N> 的编译性能。
    • 添加了 tuple_transform(由 Hans Dembinski 贡献)。
  • 多索引容器:
    • 新增了节点提取和插入功能,遵循了C++17中引入的关联容器的类似接口。与C++标准库序列容器不同,此功能也已扩展到非基于键的索引,后者不提供此类功能。
    • 澄清了关于读/写键提取器的文档(问题 #32)。
    • 维护工作。
  • Nowide:
    • 该库现在需要符合 C++11 标准的编译器和标准库。
    • LFS: 添加了对底层系统支持的 > 2 GB 文件 的支持。
    • 通用的 UTF 转换函数现在可在 boost::nowide::utf namespace 中使用。
    • 添加了对使用 UTF-8 路径的 stat 的支持。
  • Outcome:
    • 公告
      • v2.1 分支预计将于 2020 年底停用,v2.2 分支将成为默认分支。您现在可以使用 better_optimisation 使用未来的 v2.2 分支。此分支对 Outcome v2.1 进行了许多重大更改,请参阅首页了解详情。
    • 增强功能
      • 重大更改:void 结果和 outcome 不再在显式构造期间默认构造类型。以前,如果您从非错误的 result<void> 显式构造 result<T>,则它会默认构造 T。这被发现会导致不必要的意外,因此已禁用。
      • 新宏 OUTCOME_ENABLE_LEGACY_SUPPORT_FOR。当使用较新版本的 Outcome 时,可以使用宏 OUTCOME_ENABLE_LEGACY_SUPPORT_FOR 来启用较旧的命名和功能到较新的命名和功能的别名。
      • 概念现在采用蛇形命名风格,而不是驼峰命名风格。当首次实现 Outcome 时,认为 C++ 20 的概念将采用驼峰命名风格。这在 C++ 20 发布之前已更改,并且 Outcome 的概念已进行了类似的重命名。这不会破坏 Outcome v2.1 中的任何代码,因为提供了兼容性别名。但是,除非 OUTCOME_ENABLE_LEGACY_SUPPORT_FOR 设置为 210 或更低,否则针对 Outcome v2.2 编译的代码需要升级。
      • 概念现在位于 OUTCOME_V2_NAMESPACE::concepts 命名空间中。以前,概念位于 convert 命名空间中,现在它们位于自己的命名空间中。
      • 添加了新概念 basic_result<T>basic_outcome<T>。最终用户发现 is_basic_result<T>value_or_error<T> 之间存在一个无用的差距,他们需要一个匹配 basic_result 类型但又不完全是其中之一的概念。添加了填补该空白的概念。
      • 从 Outcome v2.2 开始,操作 TRY 的工作方式有所不同。这是一个严重破坏代码的更改,它更改了使用 OUTCOME_TRY() 的语法。可以在 Outcome v2.1 和 v2.2 之间的更改列表中找到适用于升级代码的正则表达式。
    • 错误修复
      • #224 Xcode 11.4 (当前最新版本) 中 Apple 提供的 clang 尚未修补 LLVM clang 的修复程序,该修复程序修复了 noexcept(std::is_constructible<T, void>) 无法编译的问题,而我最初在几年前就提交了该问题。因此,放弃等待 Apple 修复其 clang,并向 Outcome 添加一个解决方法。
      • 备用存储无法从无值策略类中使用。由于当时编写代码时明显的脑抽,备用存储 API 具有错误的原型,从而阻止了它们在策略类中工作。抱歉。
  • PolyCollection:
    • 修复了 boost::type_erasure::anyboost::any 之间的内部歧义问题(问题 #17)。
    • 维护工作。
  • SmartPtr:
    • shared_ptrweak_ptrlocal_shared_ptr 添加了 owner_equals
    • shared_ptrweak_ptr 添加了 owner_hash_value
    • 添加了 owner_equal_toowner_hash
    • shared_ptrlocal_shared_ptr 添加了 std::hash 特化。
    • weak_ptr 添加了 boost::hash 支持以及 std::hashstd::equal_to 特化。
  • Stacktrace:
    • 修复了使用 -fno-exceptions 编译时出现的构建错误(感谢 Jeremiah Rodriguez #91)。
  • System:
    • operator bool() 现在返回 failed(),而不是 value() != 0
  • Type_Traits:
    • 实现了 conjunctiondisjunctionnegationis_trivially_copyableis_scoped_enumis_unscoped_enum。(Glen Fernandes)
  • Variant:
    • 修复了缺少 override 的警告(感谢 EugeneZelenko #78)。
    • 修复了 Embarcadero 编译器的问题(感谢 Edward Diener #79)。
    • 更新了头文件位置,以避免出现关于使用已弃用头文件的警告(感谢 Andrey Semashev #80
  • Variant2:
    • 添加了对 visit 中派生类型的支持。
    • 提高了许多(数百个)备选方案的编译性能。
    • 添加了对 visit<R> 的支持。
  • Wave:
    • 为可变参数实现了 C++20 功能,包括 __VA_OPT__ (PR#75)
    • 实现了 __has_include (PR#102)
    • 引入了一个新的示例:check_macro_naming,它在 Boost 本身中很有用 (PR#97)
    • 修复了 C++20 中删除 std::allocator 成员导致的编译问题 (PR#72)
    • 修复了 Xpressive 词法分析器和 token_statistics 示例 (PR#79)
    • 修复了 lexertl 词法分析器 (PR#78)
    • 确保在预定义的宏上也会运行钩子 (PR#87)
    • 各种小的错误修复
    • 现在已弃用 C++98/03 支持,将在 1.77 中删除
  • YAP:
    • 修复了占位符的编译错误;它们现在在一般情况下工作,并且特别适用于 yap::print()。
    • constexpr 所有 YAP。
    • 修复了 yap::print() 中打印的正确值类别。
    • 文档澄清。

更新的工具

  • Boostbook:
    • 将生成的文档的编码从 US-ASCII 更改为 UTF-8。(Glen Fernandes)

测试的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang: 3.0, 4.0.1, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 5.4.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X
    • Apple Clang: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.0.0
  • Windows
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

Boost 的其他测试编译器包括

  • Linux
    • Clang: 3.0, 3.8.1, 3.9.1, 4.0.1, 5.0.2, 6.0.1
    • Clang, C++0x: 3.0
    • Clang, C++11: 3.0, 3.1, 3.2, 3.3, 3.4, 4.0.1, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++14: 3.5.0, 3.6.0, 3.7.1, 3.8.0, 3.9.1, 4.0.0, 4.0.1, 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • Clang, C++17: 5.0.2, 6.0.1, 7.0.0, 8.0.0
    • GCC: 4.4.7, 4.5.3, 4.6.3, 4.9.4, 5.4.0, 5.5.0, 8.0.1
    • GCC, C++0x: 4.4.7
    • GCC, C++11: 4.7.3, 4.8.5, 4.9.4, 5.4.0, 6.4.0, 7.1.0, 8.0.1
    • GCC, C++14: 5.4.0, 5.5.0, 6.3.0, 6.4.0, 7.1.0, 7.3.0, 8.0.1, 8.1.0
    • GCC, C++17: 7.3.0, 8.0.1
    • Intel, C++14: 18.0
  • OS X
    • Apple Clang: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++11: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++14: 9.0.0, 9.1.0, 10.0.0
    • Apple Clang, C++17: 9.1.0, 10.0.0
    • Apple Clang, C++1z: 9.0.0
    • Apple Clang, C++2a: 10.0.0
  • Windows
    • GCC: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4
    • GCC, C++0x: 4.6.4
    • GCC, C++11: 4.7.3, 4.8.1, 4.9.3
    • GCC, C++14: 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0
    • GCC, C++17: 7.1.0, 7.2.0, 7.3.0
    • Visual C++: 7.1, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0, 14.1
  • FreeBSD
    • Clang: 4.0.0
    • Clang, C++11: 4.0.0
    • Clang, C++14: 4.0.0
    • Clang, C++1z: 4.0.0

致谢

Marshall Clow、Michael Caisse 和 Glen Fernandes 管理此版本。