C++17是现代 C++编程中的下一个版本,最新版本的gcc、clang和 Visual C++ 都至少已经部分支持它。尽管 迁移到 C++17 并不像迁移到 C++11一样是一个巨大的变化,但 C++17也包含了非常多很小但却很有价值的语言 和库特性。它们再一次改变了我们使用 C++编程的方式,无论是对应用程序员还是提供基础库的程序员来说都 是如此。这本书将会展现出 C++17 中所有的新的语言和库特性。除了用例子展示这些特性的使用之外,本书还将覆 盖这些特性的动机和背景信息。像我的其他书一样,这本书也将专注于这些新特性在实践中的应用,并演示这 些特性如何影响我们的日常编程和如何在项目中受益于这些特性。
https://github.com/MeouSker77/Cpp17
本书的整体结构
这本书覆盖了 C++17 引入的所有变化。既包括影响应用程序员日常编程的那些语言和库特性,也包括那些 用于编写复杂的(基础)库实现的特性。然而,更一般的情况和相关示例会放在前面。
不同的章节被分成若干组,除了最先介绍的语言特性可能会被后面的库特性使用之外,这样分组并没有什么 深层的原因。理论上,你可以以任意顺序阅读这些章节。如果会用到其他章节的特性,那么将会有相应的交叉 引用。结果是,这本书包括以下部分:
• Part I覆盖了新的非模板语言特性。
• Part II 覆盖了用于模板泛型编程的新的语言特性。
• Part III 介绍了新的标准库组件。
• Part IV 覆盖了现有标准库组件的扩展和修改。
• Part V覆盖了为专家例如基础库程序员设计的语言和库特性。
• Part VI 包含了有关 C++17的一些通用的提示
目录内容: 第一部分 基本语言特性
第一章 结构化绑定
第二章 带初始化的 if 和 switch 语句
第三章 内联变量
第四章 聚合体扩展
第五章 强制省略拷贝或传递未实质化的对象
第六章 lambda 表达式扩展
第七章 新属性和属性特性
第八章 其他语言特性
第二部分 模板特性
第九章 类模板参数推导
第十章 编译期 if 语句
第十一章 折叠表达式
第十二章 处理字符串字面量模板参数
第十三章 占位符类型作为模板参数
第十四章 扩展的 using 声明
第三部分 新的标准库组件
第十五章 std::optional<>
第十六章 std::variant<>
第十七章 std::any
第十八章 std::byte
第十九章 字符串视图
第二十章 文件系统库
第四部分 已有标准库的扩展和修改
第二十一章 类型特征扩展
第二十二章 并行 STL 算法
第二十三章 新的 STL 算法详解
第二十四章 子串和子序列搜索器
第二十五章 其他工具函数和算法
第二十六章 容器和字符串扩展
第二十七章 多线程和并发
第二十八章 标准库的其他微小特性和修改
第五部分 专家的工具
第二十九章 多态内存资源 (PMR)
第三十章 使用 new 和 delete 管理超对齐数据
第三十一章 std::to_chars() 和 std::from_chars()
第三十二章 std::launder()
第三十三章 编写泛型代码的改进
第六部分 一些通用的提示
第三十四章 总体性的 C++17 事项
第三十五章 废弃和移除的特性