Skip to content

Commit 72ab8ab

Browse files
committed
revision: changkun#1 更新目录
1 parent 1e54325 commit 72ab8ab

File tree

2 files changed

+51
-42
lines changed

2 files changed

+51
-42
lines changed

book/2-usability.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ std::cout << "q: " << q << std::endl;
444444

445445
`decltype(auto)` 是 C++14 开始提供的一个略微复杂的用法。
446446

447-
> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化]()一章中详细介绍,你可以到时再回来看这一小节的内容。
447+
> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化](./3-runtime)一章中详细介绍,你可以到时再回来看这一小节的内容。
448448
449449

450450
简单来说,`decltype(auto)` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 `decltype` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时:

book/toc.md

Lines changed: 50 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 高速上手现代 C++ 11/14/17
1+
# 高速上手 C++ 11/14/17
22

33
> 正在向全面介绍 C++17 特性的内容过度
44
@@ -9,34 +9,38 @@
99
+ 1.1 被弃用的特性
1010
+ 1.2 与 C 的兼容性
1111
+ 进一步阅读的参考文献
12-
- **第二章 语言可用性的强化**
13-
+ nullptr 与 constexpr
14-
+ 类型推导
15-
+ `auto`
16-
+ `decltype`
17-
+ 尾返回类型、`auto``decltype` 配合
18-
19-
<!--+ decltype(auto) (C++14)-->
20-
21-
+ 区间迭代
22-
+ 基于范围的 for 循环
23-
+ 初始化列表
24-
+ `std::initializer_list`
25-
+ 统一初始化语法
26-
+ 模板增强
27-
+ 外部模板
28-
+ 尖括号 `>`
29-
+ 类型别名模板
30-
+ 变长参数模板
31-
+ 面向对象增强
32-
+ 委托构造
33-
+ 继承构造
34-
+ 显式虚函数重载
35-
+ `override`
36-
+ `final`
37-
+ 显式禁用默认函数
38-
+ 强类型枚举
39-
- **第三章 语言运行期的强化**
12+
- [**第二章 语言可用性的强化**](./2-usability.md)
13+
+ 2.1 常量
14+
- nullptr
15+
- constexpr
16+
+ 2.2 变量及其初始化
17+
- if/switch 变量声明强化
18+
- 初始化列表
19+
- 结构化绑定
20+
+ 2.3 类型推导
21+
- auto
22+
- decltype
23+
- 尾返回类型
24+
- decltype(auto)
25+
+ 2.4 控制流
26+
- if constexpr
27+
- 区间 for 迭代
28+
+ 2.5 模板
29+
- 外部模板
30+
- 尖括号 ">"
31+
- 类型别名模板
32+
- 默认模板参数
33+
- 变长参数模板
34+
- 折叠表达式
35+
+ 2.6 面向对象
36+
- 委托构造
37+
- 继承构造
38+
- 显式虚函数重载
39+
- override
40+
- final
41+
- 显式禁用默认函数
42+
- 强类型枚举
43+
- [**第三章 语言运行期的强化**](./3-runtime.md)
4044
+ lambda 表达式
4145
+ lambda 表达式基础
4246
+ 值捕获
@@ -52,7 +56,7 @@
5256
+ 右值引用和左值引用
5357
+ 移动语义
5458
+ 完美转发
55-
- **第四章 对标准库的扩充: 新增容器**
59+
- [**第四章 标准库: 容器**](./4-containers.md)
5660
+ `std::array`
5761
+ `std::forward_list`
5862
+ `std::unordered_set`
@@ -61,12 +65,12 @@
6165
+ 基本操作
6266
+ 运行期索引
6367
+ 合并与迭代
64-
- **第五章 对标准库的扩充: 智能指针和引用计数**
68+
- [**第五章 标准库: 指针**](./5-pointers.md)
6569
+ RAII 与引用计数
6670
+ `std::shared_ptr`
6771
+ `std::unique_ptr`
6872
+ `std::weak_ptr`
69-
- **第六章 对标准库的扩充: 正则表达式库**
73+
- [**第六章 标准库: 正则表达式**](./6-regex.md)
7074
+ 正则表达式简介
7175
+ 普通字符
7276
+ 特殊字符
@@ -75,28 +79,33 @@
7579
+ `std::regex`
7680
+ `std::regex_match`
7781
+ `std::match_results`
78-
- **第七章 对标准库的扩充: 语言级线程支持**
82+
- [**第七章 标准库: 线程与并发**](./7-thread.md)
7983
+ `std::thread`
8084
+ `std::mutex`
8185
+ `std::unique_lock`
8286
+ `std::future`
8387
+ `std::packaged_task`
8488
+ `std::condition_variable`
85-
- **第八章 其他杂项**
89+
- [**第八章 标准库: 文件系统** TODO]
90+
- [**第九章 其他杂项**](./8-others.md)
8691
+ 新类型
8792
+ `long long int`
8893
+ `noexcept` 的修饰和操作
8994
+ 字面量
9095
+ 原始字符串字面量
9196
+ 自定义字面量
92-
- **第九章 扩展主题: C++17 简介**
93-
+ 主要入选特性
94-
+ 非类型模板参数的 `auto`
95-
+ `std::variant<>`
96-
+ 结构化绑定(Structured bindings)
97-
+ 变量声明的强化
97+
+ 数学库
98+
- **第十章 展望: ~~C++17~~ C++20 简介**
99+
+ ~~主要入选特性~~
100+
+ ~~非类型模板参数的 `auto`~~
101+
+ ~~`std::variant<>`~~
102+
+ ~~变量声明的强化~~
98103
+ 未入选特性
99-
+ Concepts
104+
+ Concept
105+
+ Range
106+
+ Module
107+
+ Coroutine
108+
100109

101110
返回目录 | 上一章 | [下一章:序言](./0-preface.md)
102111

0 commit comments

Comments
 (0)