revision: #1 更新目录

This commit is contained in:
Changkun Ou
2018-04-07 11:07:46 +02:00
parent 1e54325cc2
commit 72ab8ab4dc
2 changed files with 51 additions and 42 deletions

View File

@@ -444,7 +444,7 @@ std::cout << "q: " << q << std::endl;
`decltype(auto)` 是 C++14 开始提供的一个略微复杂的用法。 `decltype(auto)` 是 C++14 开始提供的一个略微复杂的用法。
> 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化]()一章中详细介绍,你可以到时再回来看这一小节的内容。 > 要理解它你需要知道 C++ 中参数转发的概念,我们会在[语言运行时强化](./3-runtime)一章中详细介绍,你可以到时再回来看这一小节的内容。
简单来说,`decltype(auto)` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 `decltype` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时: 简单来说,`decltype(auto)` 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 `decltype` 的参数表达式。考虑看下面的例子,当我们需要对下面两个函数进行封装时:

View File

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