C++17 简介

何谓 C++17

2017 年 9 月,国际标准化组织(ISO)正式通过了 C++ 的新版本——C++17。C++17 带来了相当数量的新内容。

C++17 的新增改进

为方便查阅,下面列出 C++17 引入的主要变更。此列表并非穷尽,仅用于凸显关键亮点:

  • 类模板实参推导(CTAD)(参见《类模板实参推导(CTAD)与推导指引》章节)
  • 可在编译期求值的 if 语句(参见《constexpr if 语句》章节)
  • ifswitch 语句中允许使用初始化语句(在 课程13.y《使用语言参考》中提及)
  • inline 变量(参见《使用 inline 变量在多个文件间共享全局常量》章节)
  • 折叠表达式(暂无教程)
  • 某些情形下的强制复制省略(在《类初始化与复制省略》章节中提及)
  • 嵌套命名空间现可简写为 namespace X::Y(参见《用户自定义命名空间与作用域解析运算符》章节)
  • 移除 std::auto_ptr 及其他若干已弃用类型
  • static_assert 不再需要提供诊断文本参数(参见《assert 与 static_assert》章节)
  • std::any(暂无教程)
  • std::byte(暂无教程)
  • std::filesystem(暂无教程)
  • std::optional(参见《std::optional》章节)
  • std::shared_ptr 现可管理 C 风格数组(但 std::make_shared 尚无法创建它们)(参见《std::shared_ptr》章节)
  • std::size(参见《数组(第二部分)》章节)
  • std::string_view(参见《std::string_view 简介》章节)
  • 结构化绑定声明(暂无教程)
  • 删除三字符组(trigraphs)
  • 模板模板参数中现可使用 typename(而非 class
  • UTF-8 (u8) 字符字面量(暂无教程)

关注公众号,回复"cpp-tutorial"

可领取价值199元的C++学习资料

公众号二维码

扫描上方二维码或搜索"cpp-tutorial"