mirror of
https://github.com/changkun/modern-cpp-tutorial.git
synced 2025-12-17 12:44:40 +03:00
revision #2: 修复从 gitbook 迁移源码后产生的代码格式问题
This commit is contained in:
@@ -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++ 的历史进程及其未来发展感兴趣的读者阅读。
|
||||||
|
|
||||||
## 二、主要入选特性
|
## 二、主要入选特性
|
||||||
|
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -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`
|
||||||
|
|||||||
@@ -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: 将这部分内容补充为习题
|
||||||
|
|
||||||
## 进一步阅读的参考资料
|
## 进一步阅读的参考资料
|
||||||
|
|
||||||
|
|||||||
@@ -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
3
book/8-filesystem.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# 第八章 标准库: 文件系统
|
||||||
|
|
||||||
|
> TODO: 这部分内容为 C++17 新增
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# 第八章 其他杂项
|
# 第九章 其他杂项
|
||||||
|
|
||||||
> 内容修订中
|
> 内容修订中
|
||||||
|
|
||||||
52
book/appendix.md
Normal file
52
book/appendix.md
Normal 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
|
||||||
|
...
|
||||||
|
|
||||||
11
book/toc.md
11
book/toc.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user