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 日;具有指向有效示例用法的链接):
- Fold expressions
- Nested namespace definitions
- Constant evaluation for all non-type template arguments
关于 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,其中列出了多个编译器支持的功能。
更新了最终简明答案:
- GCC 8.x(及更高版本)完全支持所有 C++17。
- GCC 7.x 支持除 class 模板参数推导之外的所有 C++17。
- GCC 6.x(及更早版本)对 C++17 功能的支持很少或根本不支持。
感谢@JanVanDijk link to the full feature table。
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 HEADu8
字符文字 in HEAD- 命名空间或枚举器的属性in HEAD
不受支持(截至 2015 年 7 月 5 日;具有指向有效示例用法的链接):
- Fold expressions
- Nested namespace definitions
- Constant evaluation for all non-type template arguments
关于 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,其中列出了多个编译器支持的功能。
更新了最终简明答案:
- GCC 8.x(及更高版本)完全支持所有 C++17。
- GCC 7.x 支持除 class 模板参数推导之外的所有 C++17。
- GCC 6.x(及更早版本)对 C++17 功能的支持很少或根本不支持。
感谢@JanVanDijk link to the full feature table。