什么是 C++17?
2017 年 9 月,ISO(国际标准化组织)批准了一个新版本的 C++,名为 C++17。C++17 包含大量新内容。
C++17 的新改进
为了您的兴趣,以下是 C++17 添加的主要更改列表。请注意,此列表并非全面,而是旨在突出一些值得关注的关键更改。
- 类模板参数推导(CTAD)(13.14 -- 类模板参数推导(CTAD)和推导指南)
- 在编译时解析的 if 语句(8.4 -- Constexpr if 语句)
- if 语句和 switch 语句中的初始化器(在13.y -- 使用语言参考中提及)
- inline 变量(7.10 -- 在多个文件之间共享全局常量(使用 inline 变量))
- 折叠表达式(暂无教程)
- 某些情况下强制复制省略(在14.15 -- 类初始化和复制省略中提及)
- 嵌套命名空间现在可以定义为 namespace X::Y(7.2 -- 用户定义命名空间和作用域解析运算符)
- 移除了 std::auto_ptr 和其他一些已弃用的类型
- static_assert 不再需要诊断文本消息参数(9.6 -- Assert 和 static_assert)
- std::any(暂无教程)
- std::byte(暂无教程)
- std::filesystem(暂无教程)
- std::optional(12.15 -- std::optional)
- std::shared_ptr 现在可以管理 C 风格数组(但 std::make_shared 尚未能创建它们)(22.6 -- std::shared_ptr)
- std::size(11.2 -- 数组(第二部分))
- std::string_view(5.8 -- std::string_view 简介)
- 结构化绑定声明(暂无教程)
- 三字符序列已被移除
- typename 现在可以在模板模板参数中使用(替代 class)
- UTF-8 (u8) 字符字面量(暂无教程)