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 设施添加了对提议的标准执行器的支持。
      • 提供的执行器现在满足提议的标准执行器的要求。这些类也继续满足现有的网络 TS 执行器模型的要求。
      • 所有 I/O 对象、异步操作和实用程序都将与新的提议的标准执行器以及现有的网络 TS 执行器互操作。
      • 引入了 any_io_executor 类型别名,作为所有 I/O 对象的默认运行时多态执行器。这默认为 execution::any_executor<> 模板。如果出于向后兼容性的需要,可以定义 BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 以使用旧的 asio::executor 多态包装器。
      • 可以通过定义 BOOST_ASIO_NO_TS_EXECUTORS 来禁用对现有网络 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<> 写入操作以线性化 gather-write 缓冲区序列。
    • 当定义了 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:
    • 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。定义此项以识别来自现在可能过时的 网络 TS 的执行器的使用。
    • Asio 默认将使用 标准执行器 模型。您可以通过定义 BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 来阻止此行为,在这种情况下,默认将使用网络 TS 模型。设置此标志不会阻止程序显式使用标准执行器模型中的执行器。
    • 我们很想知道您或您的公司如何使用 Beast,请考虑在 使用 Beast 的公司和个人 列表中添加一个条目。
    • 有关更改的完整列表,请参阅完整的 发行说明
  • Bimap:
    • 更正分配器用法(修复 C++20 编译)。 (Glen Fernandes)
  • Config:
    • 实现 BOOST_NO_CXX11_OVERRIDEBOOST_OVERRIDE。 (Glen Fernandes)
  • Core:
    • 实现了分配器访问实用程序,这些实用程序为每个工具提供了 allocator_traits 的替代方案,并具有单独的 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 的重载。
  • Filesystem:
    • 删除了 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 现在返回来自 OS 的实际错误代码。以前,该函数将返回错误代码 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 操作的实现。
    • 已弃用: 使用 MSVC 兼容编译器在 Windows 上自动链接到系统库已被弃用,并将在未来的版本中删除。这会影响链接到 Boost.Filesystem 静态库的用户。建议用户更新其项目构建系统,以使用 Boost.Filesystem 的共享库,或在链接器命令行中显式指定 Boost.Filesystem 的依赖项。Boost.Filesystem 共享库的用户不受影响。
  • Flyweight:
    • 维护工作。
  • Format:
    • 更正分配器用法(修复 C++20 编译)。 (Glen Fernandes)
  • Geometry:
    • 改进
      • PR#720 额外的 R 树构造函数(感谢 Caian Benedicto)。
      • 缓冲区、集合和关系运算的各种改进。
    • 已解决的问题
      • #709 为没有平凡复制赋值的对象调用 memcpy。
      • #721 bgi::detail::rtree::visitors::insert 中的编译错误。
      • #727 MSVC 警告:条件表达式是常量。
    • Bugfixes
      • PR#700 距离算法中缺少默认策略的案例。
      • PR#738 直接大地测量公式中的经度超出范围。
  • GIL:
    • 已添加
      • 添加了新的构造函数,用于从任何图像的右值引用初始化 any_image (PR#486)。
      • 实现了反转 kernel_2d 的机制 (PR#489)。
    • 已更改
      • 重大更改:将 Boost.Variant 替换为 Boost.Variant2 (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
  • Heap:
    • 更正了 skew_heap 中顶部节点的销毁。 (Glen Fernandes)
    • 更正并简化了分配器的使用。 (Glen Fernandes)
  • Integer:
    • 修复了在 clang 10 的 C++20 模式下 gcd 的编译。
    • 改进了对 Embarcadero 编译器的支持。 (PR#21)
  • Iterator:
    • boost/function_output_iterator.hpp 标头现已弃用。用户应将其包含替换为 boost/iterator/function_output_iterator.hpp。 (PR#51)
    • 改进了对 Embarcadero 编译器的支持。 (PR#55)
  • LexicalCast:
    • 修复了缺少 override 的警告(感谢 EugeneZelenko #35, #34)。
    • 修复了 Embarcadero 编译器的问题(感谢 Edward Diener)。
  • Log:
    • 错误修复
      • syslog sink 后端现在验证用户设置的本地和目标地址的 IP 版本。地址必须具有与 sink 后端构造上 ip_version 命名参数中指定的 IP 版本相同的 IP 版本(默认情况下,假定为 IPv4)。当地址是通过主机名解析获得时,仅考虑具有匹配 IP 版本的地址。 (#119)
    • 新功能
      • 各种组件的移动构造函数和赋值运算符被标记为 noexcept
      • 添加了一个新的 range_manip 流操作符,可用于输出范围的元素,可以选择用分隔符分隔。
      • 添加了一个新的 tuple_manip 流操作符,可用于输出元组或任何其他异构序列的元素,可以选择用分隔符分隔。
      • 添加了一个新的 optional_manip 流操作符,可用于输出可选存在的值。
    • 有关更多详细信息,请参阅 changelog
  • Mp11:
    • 提高了大型 Nmp_with_index<N> 的编译性能。
    • 添加了 tuple_transform(由 Hans Dembinski 贡献)。
  • 多索引容器:
    • 添加了 节点提取和插入,遵循 C++17 中引入的关联容器的类似接口。此功能也已扩展到非基于键的索引,这与 C++ 标准库序列容器形成对比,后者不提供此类功能。
    • 澄清了关于读/写键提取器的文档(问题 #32)。
    • 维护工作。
  • Nowide:
    • 该库现在需要符合 C++11 标准的编译器和 stdlib
    • 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_ENABLE_LEGACY_SUPPORT_FOR 可用于在使用较新版本的 Outcome 时启用旧命名和功能的别名到较新的命名和功能。
      • 概念现在具有蛇形命名风格而不是驼峰命名风格。当 Outcome 首次实现时,人们认为 C++ 20 概念将具有驼峰命名风格。这在 C++ 20 发布之前已更改,Outcome 的概念也已类似地重命名。这不会破坏 Outcome v2.1 中的任何代码,因为提供了兼容性别名。但是,针对 Outcome v2.2 编译的代码需要升级,除非 OUTCOME_ENABLE_LEGACY_SUPPORT_FOR 设置为 210 或更低。
      • 概念现在位于 OUTCOME_V2_NAMESPACE::concepts 命名空间中。以前,概念位于 convert 命名空间中,现在它们位于自己的命名空间中。
      • 添加了新概念 basic_result<T>basic_outcome<T>。最终用户发现 is_basic_result<T>value_or_error<T> 之间存在无益的差距,他们想要一个概念来匹配 basic_result 类型,但又不是完全其中之一。添加了填补该空白的概念。
      • 操作 TRY 从 Outcome v2.2 开始以不同的方式工作。这是一个严重的代码破坏性更改,它更改了使用 OUTCOME_TRY() 的语法。可以在 Outcome v2.1 和 v2.2 之间的更改列表中找到适用于升级代码的正则表达式。
    • 错误修复
      • #224 Xcode 11.4(目前最新版本)中 Apple 附带的 clang 尚未修补修复 LLVM clang 的补丁,该补丁修复了 noexcept(std::is_constructible<T, void>) 编译失败的问题,这是我多年前最初提交的。因此,放弃等待 Apple 修复他们的 clang,为 Outcome 添加一个解决方法。
      • 备用存储无法在 no-value policy 类中使用。由于当时编写代码时明显犯了一个愚蠢的错误,备用存储 API 的原型错误,导致它们无法在 policy 类中工作。抱歉。
  • 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 variadics 的特性,包括 __VA_OPT__ (PR#75)
    • 实现了 __has_include (PR#102)
    • 引入了新的示例:check_macro_naming,对 Boost 本身很有用 (PR#97)
    • 修复了 C++20 中删除 std::allocator 成员导致的编译问题 (PR#72)
    • 修复了 Xpressive lexer 和 token_statistics 示例 (PR#79)
    • 修复了 lexertl lexer (PR#78)
    • 确保 hook 也对预定义的宏运行 (PR#87)
    • 各种小的 bug 修复
    • C++98/03 支持现已弃用,将在 1.77 版本中移除
  • YAP:
    • 修复了占位符的编译错误;它们现在在一般情况下工作,尤其是在 yap::print() 中工作。
    • 将所有 YAP 都设为 constexpr。
    • 修复了 yap::print() 中正确值类别的打印。
    • 文档澄清。

Updated Tools

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

Compilers Tested

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 管理了此版本。