revision #2: 修复从 gitbook 迁移源码后产生的代码格式问题

This commit is contained in:
Changkun Ou
2018-04-07 11:30:50 +02:00
parent 67d8f42967
commit 201c5603e3
11 changed files with 389 additions and 338 deletions

View File

@@ -1,6 +1,6 @@
# 第九章 扩展主题:C++17 简介 # 第九章 展望: C++20 简介
> 内容修订中 > 内容修订中, 目前内容为第一版中对 C++17 的展望
## 一、本节内容 ## 一、本节内容
@@ -10,12 +10,11 @@
+ 主要入选特性 + 主要入选特性
+ 非类型模板参数的 `auto` + 非类型模板参数的 `auto`
+ `std::variant<>` + `std::variant<>`
+ 结构化绑定(Structured bindings)
+ 变量声明的强化 + 变量声明的强化
+ 未入选特性 + 未入选特性
+ Concepts + Concepts
对即将到来的 C++17 进行介绍几个月前2016 年),目前为止,还没有一个正式发布的编译器来编译 C++17 特性的代码,本节作为扩展主题,供对 C++ 的历史进程及其未来发展感兴趣的读者阅读。 对即将到来的 C++17 进行介绍几个月前2016 年),目前为止,还没有一个正式发布的编译器来编译 C++17 特性的代码,本节作为扩展主题,供对 C++ 的历史进程及其未来发展感兴趣的读者阅读。
## 二、主要入选特性 ## 二、主要入选特性

View File

@@ -296,7 +296,6 @@ A obj = return_rvalue(false);
std::cout << "obj:" << std::endl; std::cout << "obj:" << std::endl;
std::cout << obj.pointer << std::endl; std::cout << obj.pointer << std::endl;
std::cout << *obj.pointer << std::endl; std::cout << *obj.pointer << std::endl;
return 0; return 0;
} }
``` ```

View File

@@ -7,6 +7,9 @@
本节内容包括: 本节内容包括:
* 对标准库的扩充: 新增容器 * 对标准库的扩充: 新增容器
* `std::byte`
* `std::any` `std::optional` `std::variant`
* `std::string_view`
* `std::array` * `std::array`
* `std::forward_list` * `std::forward_list`
* `std::unordered_set` * `std::unordered_set`

View File

@@ -134,7 +134,7 @@ bar.txt sub-match[1]: bar
> 本节提到的内容足以让我们开发编写一个简单的 Web 框架中关于URL匹配的功能。 > 本节提到的内容足以让我们开发编写一个简单的 Web 框架中关于URL匹配的功能。
> 关于这方面的开发和细节,可以通过项目课:[C++ 开发 Web 服务框架](https://www.shiyanlou.com/courses/568) 进行进一步学习。 > ~~关于这方面的开发和细节,可以通过项目课:[C++ 开发 Web 服务框架](https://www.shiyanlou.com/courses/568) 进行进一步学习。~~ TODO: 将这部分内容补充为习题
## 进一步阅读的参考资料 ## 进一步阅读的参考资料

View File

@@ -173,7 +173,7 @@ C++11 语言层提供了并发编程的相关支持,本节简单的介绍了 `
> 本节提到的内容足以让我们使用不超过 100 行代码编写一个简单的线程池库 > 本节提到的内容足以让我们使用不超过 100 行代码编写一个简单的线程池库
> >
> 关于这方面的使用技巧,可以通过项目课:[100 行 C++ 代码实现线程池](https://www.shiyanlou.com/teacher/courses/565) 进行进一步巩固学习。 > ~~关于这方面的使用技巧,可以通过项目课:[100 行 C++ 代码实现线程池](https://www.shiyanlou.com/teacher/courses/565) 进行进一步巩固学习。~~ TODO: 将这部分内容补充为习题
## 进一步阅读的参考资料 ## 进一步阅读的参考资料

3
book/8-filesystem.md Normal file
View File

@@ -0,0 +1,3 @@
# 第八章 标准库: 文件系统
> TODO: 这部分内容为 C++17 新增

View File

@@ -1,4 +1,4 @@
# 第章 其他杂项 # 第章 其他杂项
> 内容修订中 > 内容修订中

52
book/appendix.md Normal file
View File

@@ -0,0 +1,52 @@
# 附录:进一步阅读的学习材料
首先,恭喜你阅读完本书 🎉 !笔者希望本书有提起你对现代 C++ 的兴趣。
正如本书引言部分提到的,本书只是一本带你快速领略现代 C++ 特性的读物,而非进阶学习实践『黑魔法』的内容。笔者当然也想到了这个需求,只是这样的内容非常艰深,鲜有受众。在此,笔者列出一些能够帮助你在此书基础之上进一步学习现代 C++ 的资料。
- [C++ 参考](http://en.cppreference.com/w)
- [CppCon YouTube 频道](https://www.youtube.com/user/CppCon/videos)
- [每位程序员都需要知道的内存知识(英文)](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf)
需要支持以下内容:
- 语言级 bug 与修订
+ 表达式评估顺序
+ 类型系统改进 Type Punning
+ 弃用和删除的功能
- 语言增强
+ [x] 结构化绑定 Structured bindings
+ [ ] inline 变量 `inline` variables
+ [x] 新的控制结构 `constexpr` if
+ [ ] 新的聚合规则
+ [ ] `constexpr` 改进
+ [ ] 强制性 RVO 和复制 elision, Guaranteed copy elision
- 模板增强
+ [x] 折叠表达式 Fold expressions
+ [ ] 类模板参数推导 Class template deduction
+ [ ] `auto` non-type template parameters
- 库增强
+ [ ] `std::string_view`, `std::byte`
+ [ ] `std::any`, `std::variant`, `std::optional`
+ [ ] 容器改进 container 改进
+ [ ] thread 并行 STL 算法
+ [ ] 文件系统库
- 其他特性
+ [ ] Selection statements with initializers
+ [ ] Compile-time conditional statements
+ [ ] Unary `statuc_assert`
+ [ ] Nested namespace deinitions
+ [ ] Preprocessor predicate for header testing
+ [ ] Polymorphic allocators and memory resources
+ [ ] Aligned `new`
+ [ ] Improved insertion and splicing for associative constrainers
+ [ ] Math special functions
+ [ ] Variable templates for metafunctions
+ [ ] Boolean logic metafunctions
...

View File

@@ -86,8 +86,8 @@
+ `std::future` + `std::future`
+ `std::packaged_task` + `std::packaged_task`
+ `std::condition_variable` + `std::condition_variable`
- [**第八章 标准库: 文件系统** TODO] - [**第八章 标准库: 文件系统**](./8-filesystem.md)
- [**第九章 其他杂项**](./8-others.md) - [**第九章 其他杂项**](./9-others.md)
+ 新类型 + 新类型
+ `long long int` + `long long int`
+ `noexcept` 的修饰和操作 + `noexcept` 的修饰和操作
@@ -95,12 +95,7 @@
+ 原始字符串字面量 + 原始字符串字面量
+ 自定义字面量 + 自定义字面量
+ 数学库 + 数学库
- **第十章 展望: ~~C++17~~ C++20 简介** - [**第十章 展望: C++20 简介**](./10-cpp20.md)
+ ~~主要入选特性~~
+ ~~非类型模板参数的 `auto`~~
+ ~~`std::variant<>`~~
+ ~~变量声明的强化~~
+ 未入选特性
+ Concept + Concept
+ Range + Range
+ Module + Module