diff --git a/book/2-usability.md b/book/2-usability.md index 8350708c..c9237ff3 100644 --- a/book/2-usability.md +++ b/book/2-usability.md @@ -444,7 +444,7 @@ std::cout << "q: " << q << std::endl; `decltype(auto)` 是 C++14 开始提供的一个略微复杂的用法。 -> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化]()一章中详细介绍,你可以到时再回来看这一小节的内容。 +> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化](./3-runtime)一章中详细介绍,你可以到时再回来看这一小节的内容。 简单来说,`decltype(auto)` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 `decltype` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时: diff --git a/book/toc.md b/book/toc.md index aa9a02d8..e120ba93 100644 --- a/book/toc.md +++ b/book/toc.md @@ -1,4 +1,4 @@ -# 高速上手现代 C++ 11/14/17 +# 高速上手 C++ 11/14/17 > 正在向全面介绍 C++17 特性的内容过度 @@ -9,34 +9,38 @@ + 1.1 被弃用的特性 + 1.2 与 C 的兼容性 + 进一步阅读的参考文献 -- **第二章 语言可用性的强化** - + nullptr 与 constexpr - + 类型推导 - + `auto` - + `decltype` - + 尾返回类型、`auto` 与 `decltype` 配合 - - - - + 区间迭代 - + 基于范围的 for 循环 - + 初始化列表 - + `std::initializer_list` - + 统一初始化语法 - + 模板增强 - + 外部模板 - + 尖括号 `>` - + 类型别名模板 - + 变长参数模板 - + 面向对象增强 - + 委托构造 - + 继承构造 - + 显式虚函数重载 - + `override` - + `final` - + 显式禁用默认函数 - + 强类型枚举 -- **第三章 语言运行期的强化** +- [**第二章 语言可用性的强化**](./2-usability.md) + + 2.1 常量 + - nullptr + - constexpr + + 2.2 变量及其初始化 + - if/switch 变量声明强化 + - 初始化列表 + - 结构化绑定 + + 2.3 类型推导 + - auto + - decltype + - 尾返回类型 + - decltype(auto) + + 2.4 控制流 + - if constexpr + - 区间 for 迭代 + + 2.5 模板 + - 外部模板 + - 尖括号 ">" + - 类型别名模板 + - 默认模板参数 + - 变长参数模板 + - 折叠表达式 + + 2.6 面向对象 + - 委托构造 + - 继承构造 + - 显式虚函数重载 + - override + - final + - 显式禁用默认函数 + - 强类型枚举 +- [**第三章 语言运行期的强化**](./3-runtime.md) + lambda 表达式 + lambda 表达式基础 + 值捕获 @@ -52,7 +56,7 @@ + 右值引用和左值引用 + 移动语义 + 完美转发 -- **第四章 对标准库的扩充: 新增容器** +- [**第四章 标准库: 容器**](./4-containers.md) + `std::array` + `std::forward_list` + `std::unordered_set` @@ -61,12 +65,12 @@ + 基本操作 + 运行期索引 + 合并与迭代 -- **第五章 对标准库的扩充: 智能指针和引用计数** +- [**第五章 标准库: 指针**](./5-pointers.md) + RAII 与引用计数 + `std::shared_ptr` + `std::unique_ptr` + `std::weak_ptr` -- **第六章 对标准库的扩充: 正则表达式库** +- [**第六章 标准库: 正则表达式**](./6-regex.md) + 正则表达式简介 + 普通字符 + 特殊字符 @@ -75,28 +79,33 @@ + `std::regex` + `std::regex_match` + `std::match_results` -- **第七章 对标准库的扩充: 语言级线程支持** +- [**第七章 标准库: 线程与并发**](./7-thread.md) + `std::thread` + `std::mutex` + `std::unique_lock` + `std::future` + `std::packaged_task` + `std::condition_variable` -- **第八章 其他杂项** +- [**第八章 标准库: 文件系统** TODO] +- [**第九章 其他杂项**](./8-others.md) + 新类型 + `long long int` + `noexcept` 的修饰和操作 + 字面量 + 原始字符串字面量 + 自定义字面量 -- **第九章 扩展主题: C++17 简介** - + 主要入选特性 - + 非类型模板参数的 `auto` - + `std::variant<>` - + 结构化绑定(Structured bindings) - + 变量声明的强化 + + 数学库 +- **第十章 展望: ~~C++17~~ C++20 简介** + + ~~主要入选特性~~ + + ~~非类型模板参数的 `auto`~~ + + ~~`std::variant<>`~~ + + ~~变量声明的强化~~ + 未入选特性 - + Concepts + + Concept + + Range + + Module + + Coroutine + 返回目录 | 上一章 | [下一章:序言](./0-preface.md)