File tree Expand file tree Collapse file tree 2 files changed +51
-42
lines changed Expand file tree Collapse file tree 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;
444444
445445` decltype(auto) ` 是 C++14 开始提供的一个略微复杂的用法。
446446
447- > 要理解它你需要知道 C++ 中参数转发的概念,我们会在[ 语言运行时强化] ( ) 一章中详细介绍,你可以到时再回来看这一小节的内容。
447+ > 要理解它你需要知道 C++ 中参数转发的概念,我们会在[ 语言运行时强化] ( ./3-runtime ) 一章中详细介绍,你可以到时再回来看这一小节的内容。
448448
449449
450450简单来说,` decltype(auto) ` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 ` decltype ` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时:
Original file line number Diff line number Diff line change 1- # 高速上手现代 C++ 11/14/17
1+ # 高速上手 C++ 11/14/17
22
33> 正在向全面介绍 C++17 特性的内容过度
44
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 + 值捕获
5256 + 右值引用和左值引用
5357 + 移动语义
5458 + 完美转发
55- - ** 第四章 对标准库的扩充: 新增容器 **
59+ - [ ** 第四章 标准库: 容器 ** ] ( ./4-containers.md )
5660 + ` std::array `
5761 + ` std::forward_list `
5862 + ` std::unordered_set `
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 + 特殊字符
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
You can’t perform that action at this time.
0 commit comments