Boost C++ 库

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

版本 1.67.0

版本 1.67.0

2018 年 4 月 14 日 20:37 GMT

文档

下载
平台文件SHA256 哈希
unixboost_1_67_0.tar.bz22684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba
boost_1_67_0.tar.gz8aa4e330c870ef50a896634c931adf468b21f8a69b77007e45c444151229f665
windowsboost_1_67_0.7z1cd94f03a71334a67d36f5161b57f5931e0cd6ecf726d7aca8bd82a3be720b74
boost_1_67_0.zip7e37372d8cedd0fd6b7529e9dd67c2cb1c60e6c607aed721f5894d704945a7ec
* 下载链接由 C++ 联盟 的资助支持。

第三方下载

已知问题

这些是库作者提供的补丁,它们发现得太晚,无法在此版本中修复。请注意,它们尚未经过正常的测试流程。

新库

  • Contract: C++ 的契约式编程。支持所有契约式编程功能:子契约、类不变量、后置条件(带有旧值和返回值)、前置条件、断言失败时的可自定义操作(例如,终止或抛出)、断言的可选编译和检查等,来自 Lorenzo Caminiti。
  • HOF: C++ 的高阶函数,来自 Paul Fultz II。

更新的库

  • Asio:
    • basic_socket_acceptor::get_option 添加了缺失的 const 限定符。
    • 解决了某些版本的 gcc 中发生的解析错误。
    • 修复了教程中损坏的代码示例。
    • 添加了新的实验性功能。(请注意,“实验性”功能可能会在后续版本中更改,恕不另行通知。)
      • 添加了 experimental::detached 完成令牌。
      • 添加了 experimental::redirect_error 完成令牌。
      • 添加了 experimental::co_spawn 工具,用于与协程技术规范集成。
      • 更新了超时示例以使用最新功能。
      • 使用了 asio::steady_timer 而不是 asio::deadline_timer
      • 使用了 asio::dynamic_buffer 而不是 asio::streambuf
      • 对阻塞客户端使用了定时 asio::io_context::run_for() 函数。
      • 添加了展示用于使用超时进行阻塞的自定义完成令牌的示例。
    • 修复了在定义 BOOST_ASIO_NO_DEPRECATED 时编译单元测试的问题。
    • 更改了套接字 iostreams 默认使用 chrono,以修复与 Networking TS 的兼容性。定义 BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM 以在 basic_socket_streambufbasic_socket_iostream 中启用旧的 Boost.Date_Time 接口。
    • 更新了示例以使用 chrono 而不是 Boost.Date_Time。
    • 修复了 is_dynamic_buffer 特性中不正确的成员函数检测器。
    • 修复了与已弃用的 handler_typeasync_result 不兼容问题。
    • 在 SSL 流实现中添加了缺失的移动优化。
    • 修复了不正确的 basic_resolver_results::value_type typedef。
    • 修复了在定义 SSL_OP_NO_COMPRESSION 时某些 OpenSSL 版本出现的编译错误。
    • 更改了 add_certificate_authority 以处理捆绑中的多个证书。
    • 通过使用 std::invoke_result 而不是 std::result_of,消除了 MSVC 的弃用警告。
    • 更改为对 C++17 或更高版本使用 std::string_view,对 C++14 使用 std::experimental::string_view。定义预处理器宏 BOOST_ASIO_DISABLE_STD_STRING_VIEW 以在 C++17 模式下编译时强制使用 std::experimental::string_view(假设它可用)。
    • 确保在 enable_if 测试中使用之前,DynamicBuffer 模板参数已衰减。
    • 更改了文档以区分旧的完成处理程序(仍然需要是 CopyConstructible)和新的 MoveConstructible 处理程序。
    • 抑制了缓冲区调试支持中的已丢弃返回值警告。
    • 修复了 basic_yield_context 以便与包含引用参数的完成签名一起使用。
    • 确保使用 spawn() 启动的有栈协程正确存储其函数和处理程序参数的衰减副本。
    • 修复了一些与 Android 的兼容性问题。
    • 向 Jamfiles 添加了交叉编译支持。
    • 修复了示例中的一些小的可移植性问题。
  • Atomic:
    • 重大更改: 将 Boost 1.66 中添加的 (op)_and_test 操作的结果更改为相反 - 如果操作结果非零,则函数现在返回 true。这与 Boost.Atomic 和 C++ 标准库中的其他 test 方法一致。用户可以在编译代码时定义 BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST,以便在使用更改的函数的任何地方发出警告。这样,用户可以找到需要更新的代码。(#11)
    • 更新以支持 C++2a。在支持范围枚举的 C++11 编译器上,memory_order 枚举现在是范围的,并且包含具有较短名称的常量,如 acquirereleaseseq_cst (即,用户可以使用 memory_order::acquire 而不是 memory_order_acquire)。还提供了旧的常量以实现向后兼容性。 (P0439R0)
    • 更新以支持 C++2a。为浮点类型添加了原子操作的实验性支持。除了常规操作之外,还支持 addsubnegate 操作及其 fetch_(op)opaque_(op) 版本。可以使用新宏 BOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE 测试无锁属性。对浮点类型的支持是可选的,可以通过定义 BOOST_ATOMIC_NO_FLOATING_POINT 来禁用。 (P0020R6)
    • 添加了新的实验性操作
      • negate_and_testcomplement_and_test,它们执行取反或按位求反,如果结果非零,则返回 true
      • addsubnegatebitwise_andbitwise_orbitwise_xorbitwise_complement 操作,它们执行操作并返回其结果。
    • 对于泛型 atomic<T> 特化,如果 T 的默认构造函数是平凡的,则默认构造函数现在是平凡的。
    • 已更新 atomic<T> 的内部实现,以避免由有符号整数溢出引起的未定义行为。按照 C++ 标准的要求,该库在内部使用有符号整数的二进制补码表示形式,并根据溢出规则。目前,该库要求原生有符号整数类型也使用二进制补码表示形式(但没有定义的溢出语义)。
    • 改进了 Clang 支持。特别是,修复了 DCAS 不是无锁的,并修复了在 32 位 x86 上生成的可能不正确的代码。
    • 改进了 MinGW 支持。对于最高版本为 4.6 的 gcc 版本,修复了在 x86 上编译 DCAS 的问题。
    • 在 x86 PIE 代码中,asm 块现在保留 ebx 值。
  • Beast:
    • 此版本修复了 websocket::stream 中的重大缺陷,这些缺陷可能导致断言或未定义的行为。鼓励用户更新到最新的 Boost 版本。
    • 有关更改的完整列表,请查看官方发行说明
  • ContainerHash:
    • 从 functional 模块中提取以打破依赖循环。
    • 将头文件移动到新的位置以反映名称更改,旧的包含路径仍然有效。
    • 增加了对 std::string_viewstd::error_codestd::error_conditionstd::optionalstd::variantstd::monostate 的支持(如果可用)。
    • 增加了对 vector<bool> 的显式支持,使其能与 libc++ 协同工作 (#13501)。
    • 更多细节请参考库变更日志
  • 上下文:
    • #62/PR#64: 修复 i386/macho 例程以在 EAX/EDX 中正确返回 transfer_t
    • #65: __sanitizer_finish_switch_fiber 应该在上下文切换后直接调用
    • #66: Windows 上的 Clang:错误:libs/context/build/asm_sources 没有最佳替代方案
    • #73: 修复 execution_context 的 C2492 错误 (v1)
    • 已知错误:包含 all.hpp + <context-impl>ucontext/winfib 会导致错误 'forced_unwind: 不是 boost::context::detail 的成员'
  • 核心:
    • 更新了 to_addresspointer_traits 以反映在 P0653R2 (Glen Fernandes) 中为 C++2a 采用的设计。
  • 协程2:
    • #13: 如果在第一次进入时抛出异常,则 Pull 协程不会重新抛出异常
  • 日期时间:
    • 修复了各种 2038 年(32 位)问题 (#2818) (#2819) (#3487) (#4543) (#8450) (#9158) (#9489) (#10570) (#12609)
    • 修复了 1.66.0 版本中引入的二进制序列化回归问题 (#56) (PR#58) (PR#70)
    • 更新了时区数据库文件 (#4430) (#10087) (PR#68)
    • 增强了 from_iso_string,使其可以读取特殊值的 to_iso_string 的输出 (#1078) (PR#69)
    • 将最大支持年份从 10000 更改为 9999 以解决各种问题 (#13159) (#12630) (PR#71)
    • boost::date_time::period_parser::delimiter_strings 没有做任何事情 (#11142) (PR#63)
    • 确保特殊值不会自动转换为整数类型 (#11168) (PR#64)
    • int_adapter::is_signed 应该是 const (#12363) (PR#60)
    • boost::date_time::time_input_facet 在单独使用 %j 时抛出异常 (#12910) (PR#59)
    • 时间输入方面无法解析 %e 日 (#13194) (PR#54)
    • 改进了 Github CI 构建环境,以获得更好的项目指标和质量 (PR#52) (PR#72)
    • 修复了各种编译器警告 (#3606) (#9882) (PR#62)
  • DLL:
    • 修复了在脏的 GetLastError() 上调用函数的问题 #16
  • 纤程:
    • #128: 使用 condition_variable::wait_for 时断言 "! ctx->ready_is_linked()"
    • #132: 致命错误:找不到 'stdexception' 文件
    • #141: boost::fibers::async 问题
    • #146: 删除远程就绪队列自旋锁的不必要锁定
    • #153: 文档:将 set_ready() 替换为 schedule()
    • #154: 文档化通道上的迭代器
    • #155: this_fiber 被错误地记录为 boost::fibers 的成员
    • #156: 许多示例都在使用它们自己的 barrier.hpp
    • #158: 将 BOOST_FIBERS_DECL 添加到 work_stealing 类
    • #162: 删除定时等待操作的 use-coutner 增量
    • #166: 删除 schedule() 中对 wait_is_linked() 的断言
    • #167: 仅当 future 是从 shared_state 创建时才调用 shared_state::owner_destroyed()
    • #168: fiber/doc/installing.qbk 不是最新的
  • 文件系统:
    • 修复了在 main() 之前使用路径操作时导致崩溃的静态初始化问题 (PR#62, PR#43, PR#50, PR#59)
  • 融合:
    • fusion::map 的模板参数中切换到 SFINAE,以修复较新 MSVC 2017 上的编译错误。(PR#164)
    • 修复了 fusion::vector 上与 CWG defect 945 不兼容的编译器的问题。 (PR#166)
    • 在序列转换器上添加了限制预检查,以使错误消息更清晰。(PR#168)
    • 允许 fusion::tag_offusion::is_native_fusion_sequence 中的不完整类型。请注意,这不会更改先前版本的行为,但符合 TypeTraits 的更改。 (PR#171)
  • 几何:
    • 改进
      • 新的地图投影和 SRS 变换表示(由于潜在的接口更改,目前未记录)。
      • 新的 densify() 算法。
      • 不再使用 std::iterator (感谢 Daniela Engert)。
      • 不再在 rtree 中直接使用分配器。替换为 boost::container::allocator_traits (感谢 Daniela Engert)。
      • 默认的 rtree 分配器更改为 boost::container::new_allocator,以便仍然在 C++03 中使用 boost::container::allocator_traits 支持移动语义模拟。
      • 区域策略接口已更改。这可能是一个重大更改。
      • 可以将半径或球体传递到球形策略中。
      • 添加了点-盒和盒-盒球形和地理距离() 策略。
      • 简化(多)边形将丢弃 2 个点的输出环或(对于闭合多边形)3 个点的输出环,但它会尝试避免创建这些环
      • 简化(多)边形将从输出中省略空的内部环或多边形
    • 解决的问题
      • 13386 某些 gcc 编译器的解决方法
      • 13381 Visual C++ 2015 中 matrix_transformer 的编译错误
      • 13436 boost::geometry::model::polygon 文档中的不正确之处
    • Bugfixes
      • 在 length() 算法中添加缺少的策略解析,影响 Variant 支持。
      • 简化(多)边形现在简化闭合点
    • 行为变化
      • 简化(多)边形现在通常会在简化之前旋转输入环,以在其凸包上选择一个非共线点。这改进了输出。
  • 区域设置:
    • 除了 C++2003 auto_ptr 之外,还增加了对 unique_ptr 接口的支持 - 为了支持 C++2017,现在可以使用 BOOST_LOCALE_HIDE_AUTO_PTR 定义从接口中删除 auto_ptr 并防止已弃用警告。
    • 修复了 ICU >60.1 的测试问题
    • 修复了 solaris 构建
    • 修复了优化的构建中奇怪的 FreeBSD/clang 问题。可能是编译器解决方法
    • 针对由于 932 代码页 codecvt 问题导致 MSVC 测试失败添加了解决方法
    • 修复了错误 6851、12572、12453
    • 修复了 icu/date_time 中失败时缺少抛出的错误
    • 再次修复了针对 Boost.Thread v4 的构建
    • 修复了 ICU 后端格式化中的周年份而不是年份
    • 修复了 ICU 56.1 及更高版本的格式化测试
  • 日志:
    • 提高了与 C++17 的兼容性:使用 allocator_traits 来处理分配器,而不是直接访问其成员。
    • 通过更新库 ABI 命名空间定义,提高了与 gcc 7 及更高版本的兼容性。
    • 为“TextFile”接收器的“Append”配置文件参数添加了文档。该参数之前已支持,只是缺少文档。
  • 数学:
    • 添加朴素蒙特卡洛积分支持。
    • 添加切比雪夫插值例程。
  • 多索引容器:
    • 现在完全接受重载了 operator& 的元素(ticket #13307)。感谢 Daniel Frey 更新 Boost.Operators 以帮助解决此问题。
    • 避免使用 C++17 中已弃用的 std::allocator 成员。由 Daniela Engert 贡献。
    • 维护修复。
  • 多精度:
    • 重大更改: 当将多精度整数转换为较窄的类型时,如果该值太大(或为负数)而无法容纳在较小的类型中,则结果将是目标类型的最大值(或最小值)。这始终是预期的行为,但以前的强制执行有些随意。如果您真的只想获取值的低 N 位,那么您需要在转换之前将其屏蔽掉,例如:static_cast<unsigned>(~static_cast<unsigned>(0) & my_value)。请注意,从技术上讲(为了避免未定义的行为),您也应该对内置整数类型执行相同的操作。请参阅 #13109
    • 修复了十进制到有理数类型转换中的错误(零需要特殊处理),请参阅 #13148
    • 修复了从 cpp_bin_float 到更宽的内置整数类型的转换,请参阅 #13301
    • 改进了 cpp_bin_float exp 函数中使用的性能启发式。
    • 修复了当指数类型比 int 更宽时 floor/ceil 和 cpp_bin_float 中的错误,请参阅 #13264
    • 当目标类型已经可以从此类型构造时,禁用显式转换运算符,请参阅 #30
    • 修复了对 MPIR-3.0 新更改的支持,请参阅 #13124
  • 可选:
    • 修复了问题 #46
    • 修复了 -Wzero-as-null-pointer-constant 警告。
  • Phoenix:
    • 更正了文档和示例代码。( #8187, PR#56, PR#57)
    • 修复了 C++11 中从数组类型初始化 phoenix lazy 的错误。( #12733, PR#58, PR#61)
    • 使用 proto 下标和赋值重载运算符内置函数来修复最近的 MSVC 上某些 lambda 表达式的编译错误。( #62, PR#64, PR#66, PR#67)
    • 删除已弃用的 std::iteratror 的使用。感谢 Daniela Engert。( PR#59)
  • PolyCollection:
    • 维护修复。
  • Python:
    • 库名称现在包含用于编译它的 Python 版本的版本后缀。例如,使用 Python 2.7 编译的变体将生成库名称 boost_python27boost_numpy27 等。与 Boost.Build 中的相关修复相结合,这意味着现在可以在单个构建过程中为多个 Python 版本构建变体。
  • Spirit:
    • Spirit.X3
      • 重大更改: 删除了 with_context ( #239)
      • 将 noexcept 添加到 x3::variantforward_ast ( #241)
      • CR+LF 行在 error_handler::position() 中被错误地计数 ( #248)
      • 修复了 parse_into_container 中的 unused_type 属性的情况 ( #266)
      • 修复了解析到关联容器中 ( #289)
      • 修复了 uint_parser<signed T> 中的溢出问题 ( #297)
      • 通过使用解决方法添加了 VS2015 Update 3 支持 ( #308)
      • 修复了与 Qi 的包含保护名称冲突 ( #313)
      • 添加了解析到范围 ( #316) ( #12928)
      • 将迭代器概念静态断言从 ForwardIterator 更改为 ReadableIteratorConcept && ForwardTraversalConcept ( #320)
      • 重新启用了 fusion::map 支持 ( #330)
      • 修复了 string("...")attr("...") 到单个项目序列 ( #337)
      • 取消引用单个项目视图而不是解包序列 ( #340)
      • 防止 parse_nan 取消引用超出范围的迭代器 ( #351)
      • 使用特征来测试容器是否为空 ( #355)
    • Spirit V2
      • 修复了 C++11 上的关键字指令编译 ( #256) ( #11493)
      • 修复了子规则编译 ( #279) ( #259)
      • 修复了作用域错误后使用子规则 ( #284) ( #5270)
      • 修复了顺序或运算符中未定义的行为。基础解析器的执行顺序取决于编译器 ( #310)
      • Spirit 意外地依赖于 boost::optionaltypes typedef。该 typedef 已在新的可选实现中删除 ( #271) ( #12349)
      • 修复了 BOOST_SPIRIT_NO_PREDEFINED_TERMINALS 的问题(attr_castconfixdistinctkeywordsflush_multi_pass) ( #314) ( #13311)
      • 将缺失的复制赋值运算符添加到 hold_any ( #361) ( #8268)
    • Spirit.Qi
      • 修复了备用运算符 ( #201) ( #271) ( #12349)
      • 修复了实数解析器中的有符号整数溢出 ( #245)
      • 修复了 uint_parser<signed T> 中的溢出问题 ( #297)
      • 修复了 get_current_line, get_line_start, 并添加了 get_line_end ( #304)
      • 排列解析器始终初始化可选 ( #319) ( #12473)
      • 将迭代器概念静态断言从 ForwardIterator 更改为 ReadableIteratorConcept && ForwardTraversalConcept ( #320)
      • 在实数解析器中添加了断言,以确保用户定义的实数策略中的 parse_frac_n 不返回负值,并且还防止静态分析器出现误报 ( #358)
    • Spirit.Karma
      • 修复了备用运算符 ( #271)
      • 修复了 no_buffering_policy 缺少复制构造函数 ( #261)
      • ostream_iterator 继承了 C++17 中已弃用的 std::iterator ( #345)
    • Spirit.Lex
      • 将 id 存储为提升的类型,以允许枚举外的值 ( #247)
      • 修复了生成的词法分析器中的 C2001“常量中的换行符”警告 ( #324) ( #11540)
    • Spirit.Classic
      • 修复了 Phoenix 中没有命名空间的 remove_reference 的使用 ( #274)
      • 修复了不包含的 std::complex 的使用 ( #273)
      • 修复了 match<T &> 的编译 ( #275)
      • 修复了定义了 BOOST_DISABLE_THREADS 的编译 ( #323) ( #12639)
      • 通过迭代器策略递增扫描器 ( #336) ( #7371)
      • 删除了 C++17 中已弃用的 std::iterator 的使用 ( #345)
  • Stacktrace:
    • 在某些平台上,Windows 操作系统上的异步安全转储到文件会导致挂起,现在已禁用 #33。鼓励用户更新到最新的 Boost 版本。
    • 现在使用 ContainerHash 库来减少依赖关系。
    • 小的修复 (包括 #31, #38, #39, #40, #42)。
  • Test:
    • Boost.test v3.7 请参阅 更改日志 以获取更多详细信息。
    • 重大更改
      • 现在将具有相同名称的测试用例添加到同一测试套件中会报告为错误。请参阅更改日志以获取更多详细信息。
    • 新功能
      • 默认启用彩色输出,并且在 Windows 上可用,
      • 改进且更清晰的命令行帮助
      • BOOST_AUTO_TEST_CASE_TEMPLATE 现在接受 std::tuple 中的类型序列
    • 错误修复和拉取请求
  • TypeIndex:
    • 现在使用 ContainerHash 库来减少依赖关系。
    • 小的修复 (包括 #17)
  • TypeTraits:
    • 添加了新特征 detected, detected_or, is_detected, is_detected_convertible, is_detected_exact, is_complete
    • 为检测二元运算符添加了极大改进的代码。
    • 为需要完整类型作为参数的 trait 添加了完整性断言:这可以防止各种 trait 从不完整类型中给出错误的结果。
    • 修复了 mpl 兼容性的小问题,请参阅 #12212
    • 添加宏以指示 is_constructible 何时完全实现,请参阅 #12003
    • 更新 is_functionis_member_function_pointer 以便与 C++17 noexcept 规范正确工作。
    • is_default_constructiblestd::pair 添加了解决方法。
    • 为 pre-C++11 编译器上的 is_nothrow_swappable 添加了回退。
  • 实用工具:
    • 重大更改: <boost/utility.hpp> 头文件不再包含 boost::nextboost::prior,因为它们已移至 iterator 模块。请改为包含 <boost/next_prior.hpp>。不鼓励使用 <boost/utility.hpp> 的其他用法,最好使用特定功能的头文件。
  • 无序:
    • 模板推导指南。
    • 针对 swapoperator= 和节点句柄的标准一致的 noexcept 规范。
    • 为迭代器添加 element_type,以便 std::pointer_traits 可以工作。
    • 在最新的 Visual C++ 和 Dinkumware 库上支持 std::piecewise_construct
    • 使用 std::iterator_traits 而不是 boost 迭代器 trait,以便删除对 Boost.Iterator 的依赖。
    • 迭代器不再继承自 std::iterator,因为它已被弃用 (PR#7)。
    • 更多详细信息请参阅 库更改日志
  • 单位:
    • 修复了缩放单位的 sqrt #10270 #27
    • 添加 constexpr 支持 #22
    • 小的文档修复
  • Uuid:
    • 重大更改: random_generator 不再可复制 (#61)
    • 优化了 random_generator 以直接使用操作系统提供的熵 (PR#53)
    • 提供 random_generator_mt19937 用于批量 UUID 生成
    • 处理熵获取错误而不是忽略它们
    • 支持 Windows UWP (#24)
    • 支持 CloudABI
  • Variant:
    • 在使用可变参数模板支持的编译器上替换函数参数,并且不使用预处理器生成替换元函数 #42#46。 非常感谢 Nikita Kniazev 提供的初始修复。
    • 完美转发以在 apply_visitor 中传递访问器 #40#13288。非常感谢 Paweł Dac!
    • 小的修复(包括 #41#44

测试的编译器

Boost 的主要测试编译器是

  • Linux
    • Clang:3.0、4.0.1、5.0.1
    • Clang,C++0x:3.0
    • Clang,C++11:3.0、3.1、3.2、3.3、3.4、4.0.1、5.0.1
    • 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.1
    • Clang,C++17:5.0.1
    • GCC:4.4.7、4.5.3、4.6.3、5.4.0、7.2.0
    • 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、7.2.0
    • GCC,C++14:5.4.0、5.4.1、6.3.0、6.4.0、7.1.0、7.2.0、7.3.0
    • GCC,C++17:7.2.0
    • Intel,C++14:18.0
  • OS X
    • Clang:9.0.0
    • Clang,C++11:9.0.0
    • Clang,C++14:9.0.0
    • Clang,C++1z:9.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、7.1.0
    • Visual C++:7.1、8.0、9.0、10.0、11.0、12.0、14.0、14.1

Boost 的其他测试编译器包括

  • Linux
    • Clang:3.0、3.8.1、4.0.1、5.0.1
    • Clang,C++0x:3.0
    • Clang,C++11:3.0、3.1、3.2、3.3、3.4、4.0.1、5.0.1
    • 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.1
    • Clang,C++17:5.0.1
    • GCC:4.4.7、4.5.3、4.6.3、4.7.2、4.9.2、5.4.0、7.2.0
    • 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、7.2.0
    • GCC,C++14:5.4.0、5.4.1、6.3.0、6.4.0、7.1.0、7.2.0、7.3.0
    • GCC,C++17:7.2.0
    • Intel,C++14:18.0
  • OS X
    • Clang:9.0.0
    • Clang,C++11:9.0.0
    • Clang,C++14:9.0.0
    • Clang,C++1z:9.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、7.1.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

致谢

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