File tree 2 files changed +51
-42
lines changed
2 files changed +51
-42
lines changed Original file line number Diff line number Diff line change @@ -444,7 +444,7 @@ std::cout << "q: " << q << std::endl;
444
444
445
445
` decltype(auto) ` 是 C++14 开始提供的一个略微复杂的用法。
446
446
447
- > 要理解它你需要知道 C++ 中参数转发的概念,我们会在[ 语言运行时强化] ( ) 一章中详细介绍,你可以到时再回来看这一小节的内容。
447
+ > 要理解它你需要知道 C++ 中参数转发的概念,我们会在[ 语言运行时强化] ( ./3-runtime ) 一章中详细介绍,你可以到时再回来看这一小节的内容。
448
448
449
449
450
450
简单来说,` decltype(auto) ` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 ` decltype ` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时:
Original file line number Diff line number Diff line change 1
- # 高速上手现代 C++ 11/14/17
1
+ # 高速上手 C++ 11/14/17
2
2
3
3
> 正在向全面介绍 C++17 特性的内容过度
4
4
9
9
+ 1.1 被弃用的特性
10
10
+ 1.2 与 C 的兼容性
11
11
+ 进一步阅读的参考文献
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 )
40
44
+ lambda 表达式
41
45
+ lambda 表达式基础
42
46
+ 值捕获
52
56
+ 右值引用和左值引用
53
57
+ 移动语义
54
58
+ 完美转发
55
- - ** 第四章 对标准库的扩充: 新增容器 **
59
+ - [ ** 第四章 标准库: 容器 ** ] ( ./4-containers.md )
56
60
+ ` std::array `
57
61
+ ` std::forward_list `
58
62
+ ` std::unordered_set `
61
65
+ 基本操作
62
66
+ 运行期索引
63
67
+ 合并与迭代
64
- - ** 第五章 对标准库的扩充: 智能指针和引用计数 **
68
+ - [ ** 第五章 标准库: 指针 ** ] ( ./5-pointers.md )
65
69
+ RAII 与引用计数
66
70
+ ` std::shared_ptr `
67
71
+ ` std::unique_ptr `
68
72
+ ` std::weak_ptr `
69
- - ** 第六章 对标准库的扩充: 正则表达式库 **
73
+ - [ ** 第六章 标准库: 正则表达式 ** ] ( ./6-regex.md )
70
74
+ 正则表达式简介
71
75
+ 普通字符
72
76
+ 特殊字符
75
79
+ ` std::regex `
76
80
+ ` std::regex_match `
77
81
+ ` std::match_results `
78
- - ** 第七章 对标准库的扩充: 语言级线程支持 **
82
+ - [ ** 第七章 标准库: 线程与并发 ** ] ( ./7-thread.md )
79
83
+ ` std::thread `
80
84
+ ` std::mutex `
81
85
+ ` std::unique_lock `
82
86
+ ` std::future `
83
87
+ ` std::packaged_task `
84
88
+ ` std::condition_variable `
85
- - ** 第八章 其他杂项**
89
+ - [ ** 第八章 标准库: 文件系统** TODO]
90
+ - [ ** 第九章 其他杂项** ] ( ./8-others.md )
86
91
+ 新类型
87
92
+ ` long long int `
88
93
+ ` noexcept ` 的修饰和操作
89
94
+ 字面量
90
95
+ 原始字符串字面量
91
96
+ 自定义字面量
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
+ + ~~ 变量声明的强化~~
98
103
+ 未入选特性
99
- + Concepts
104
+ + Concept
105
+ + Range
106
+ + Module
107
+ + Coroutine
108
+
100
109
101
110
返回目录 | 上一章 | [ 下一章:序言] ( ./0-preface.md )
102
111
You can’t perform that action at this time.
0 commit comments