GCC 对 C++17 的支持情况如何?

What's the status of C++17 support in GCC?

Clang 有一个 nice page 描述项目状态 w.r.t。 C++1z/C++17 功能支持(以及 C++11 和 C++14,它是同一页)。

g++ 有 a page regarding C++14 features,但我找不到任何关于 C++17/C++1z 的信息。是否正在处理但未出现在网络上?对于 5.0 版?

已经有一些支持;以下两篇总结是针对Clang的列表:

支持(截至 2015 年 7 月 5 日):

  • auto 支持函数参数 since 4.9。此功能目前被视为扩展,但包含在概念提案中并称为 "generic functions".
  • 默认忽略三字母 since 5.1.0
  • typename for template 模板参数since 5.1.0
  • 直接列表初始化的新推导规则since 5.1.0
  • static_assert 没有消息 in HEAD
  • u8 字符文字 in HEAD
  • 命名空间或枚举器的属性in HEAD

不受支持(截至 2015 年 7 月 5 日;具有指向有效示例用法的链接):

关于 libstdc++ 中库提案的执行情况,the corresponding manual 有一个列表。

截至今天,跟踪 gcc 的 C++1z 语言支持:https://gcc.gnu.org/projects/cxx1z.html. For the C++1z status of libstdc++, see https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.201z

cppreference.com 上还有一个不错的 table,其中列出了多个编译器支持的功能。

http://en.cppreference.com/w/cpp/compiler_support

更新了最终简明答案:

  • GCC 8.x(及更高版本)完全支持所有 C++17。
  • GCC 7.x 支持除 class 模板参数推导之外的所有 C++17。
  • GCC 6.x(及更早版本)对 C++17 功能的支持很少或根本不支持。

感谢@JanVanDijk link to the full feature table