revision #2: 更换文件名缩写

This commit is contained in:
Changkun Ou
2018-04-07 11:36:39 +02:00
parent 201c5603e3
commit 53658f7923
12 changed files with 30 additions and 30 deletions

View File

@@ -30,7 +30,7 @@ C++17 则是近三年依赖 C++ 社区一致推进的方向,也指出了**现
本书每章中都出现了大量的代码,如果你在跟随本书介绍特性的思路编写自己的代码遇到问题时,不妨读一读随书附上的源码,你可以在[这里](../code)中找到书中介绍过的全部的源码,所有代码按章节组织,文件夹名称为章节序号。 本书每章中都出现了大量的代码,如果你在跟随本书介绍特性的思路编写自己的代码遇到问题时,不妨读一读随书附上的源码,你可以在[这里](../code)中找到书中介绍过的全部的源码,所有代码按章节组织,文件夹名称为章节序号。
[返回目录](./toc.md) | 上一章 | [下一章:迈向 C++11/14/17](./1-intro.md) [返回目录](./toc.md) | 上一章 | [下一章:迈向 C++11/14/17](./01-intro.md)
## 许可 ## 许可

View File

@@ -118,7 +118,7 @@ clean:
不必担心,本书的后续章节将为你介绍这一切。 不必担心,本书的后续章节将为你介绍这一切。
[返回目录](./toc.md) | [上一章](./0-preface.md) | [下一章:语言可用性强化](./2-usability.md) [返回目录](./toc.md) | [上一章](./0-preface.md) | [下一章:语言可用性强化](./02-usability.md)
## 进一步阅读的参考文献 ## 进一步阅读的参考文献

View File

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

View File

@@ -24,8 +24,8 @@
```cpp ```cpp
template <typename T, typename U> template <typename T, typename U>
auto add(T t, U u) { auto add(T t, U u) {
return t+u; return t+u;
} }
``` ```
@@ -35,10 +35,10 @@ return t+u;
template <typename T, int BufSize> template <typename T, int BufSize>
class buffer_t { class buffer_t {
public: public:
T& alloc(); T& alloc();
void free(T& item); void free(T& item);
private: private:
T data[BufSize]; T data[BufSize];
} }
buffer_t<int, 100> buf; // 100 作为模板参数 buffer_t<int, 100> buf; // 100 作为模板参数
@@ -48,7 +48,7 @@ buffer_t<int, 100> buf; // 100 作为模板参数
```cpp ```cpp
template <auto value> void foo() { template <auto value> void foo() {
return; return;
} }
foo<10>(); // value 被推导为 int 类型 foo<10>(); // value 被推导为 int 类型
@@ -64,16 +64,16 @@ C++17 正式将 `variant<>` 纳入标准库,摇身一变成为 `std::variant<>
#include <variant> #include <variant>
template <size_t n, typename... Args> template <size_t n, typename... Args>
std::variant<Args...> _tuple_index(size_t i, const std::tuple<Args...>& tpl) { std::variant<Args...> _tuple_index(size_t i, const std::tuple<Args...>& tpl) {
if (i == n) if (i == n)
return std::get<n>(tpl); return std::get<n>(tpl);
else if (n == sizeof...(Args) - 1) else if (n == sizeof...(Args) - 1)
throw std::out_of_range("越界."); throw std::out_of_range("越界.");
else else
return _tuple_index<(n < sizeof...(Args)-1 ? n+1 : 0)>(i, tpl); return _tuple_index<(n < sizeof...(Args)-1 ? n+1 : 0)>(i, tpl);
} }
template <typename... Args> template <typename... Args>
std::variant<Args...> tuple_index(size_t i, const std::tuple<Args...>& tpl) { std::variant<Args...> tuple_index(size_t i, const std::tuple<Args...>& tpl) {
return _tuple_index<0>(i, tpl); return _tuple_index<0>(i, tpl);
} }
``` ```
@@ -91,9 +91,9 @@ C++ 组委会在讨论投票最终确定 C++17 有很多提案,诸如 **Concep
#include <list> #include <list>
#include <algorithm> #include <algorithm>
int main() { int main() {
std::list<int> l = {1, 2, 3}; std::list<int> l = {1, 2, 3};
std::sort(l.begin(), l.end()); std::sort(l.begin(), l.end());
return 0; return 0;
} }
``` ```

View File

@@ -5,11 +5,11 @@
## 目录 ## 目录
- [**序言**](./0-preface.md) - [**序言**](./0-preface.md)
- [**第 1 章 迈向 C++11/14/17**](./1-intro.md) - [**第 1 章 迈向 C++11/14/17**](./01-intro.md)
+ 1.1 被弃用的特性 + 1.1 被弃用的特性
+ 1.2 与 C 的兼容性 + 1.2 与 C 的兼容性
+ 进一步阅读的参考文献 + 进一步阅读的参考文献
- [**第二章 语言可用性的强化**](./2-usability.md) - [**第二章 语言可用性的强化**](./02-usability.md)
+ 2.1 常量 + 2.1 常量
- nullptr - nullptr
- constexpr - constexpr
@@ -40,7 +40,7 @@
- final - final
- 显式禁用默认函数 - 显式禁用默认函数
- 强类型枚举 - 强类型枚举
- [**第三章 语言运行期的强化**](./3-runtime.md) - [**第三章 语言运行期的强化**](./03-runtime.md)
+ lambda 表达式 + lambda 表达式
+ lambda 表达式基础 + lambda 表达式基础
+ 值捕获 + 值捕获
@@ -56,7 +56,7 @@
+ 右值引用和左值引用 + 右值引用和左值引用
+ 移动语义 + 移动语义
+ 完美转发 + 完美转发
- [**第四章 标准库: 容器**](./4-containers.md) - [**第四章 标准库: 容器**](./04-containers.md)
+ `std::array` + `std::array`
+ `std::forward_list` + `std::forward_list`
+ `std::unordered_set` + `std::unordered_set`
@@ -65,12 +65,12 @@
+ 基本操作 + 基本操作
+ 运行期索引 + 运行期索引
+ 合并与迭代 + 合并与迭代
- [**第五章 标准库: 指针**](./5-pointers.md) - [**第五章 标准库: 指针**](./05-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) - [**第六章 标准库: 正则表达式**](./06-regex.md)
+ 正则表达式简介 + 正则表达式简介
+ 普通字符 + 普通字符
+ 特殊字符 + 特殊字符
@@ -79,15 +79,15 @@
+ `std::regex` + `std::regex`
+ `std::regex_match` + `std::regex_match`
+ `std::match_results` + `std::match_results`
- [**第七章 标准库: 线程与并发**](./7-thread.md) - [**第七章 标准库: 线程与并发**](./07-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`
- [**第八章 标准库: 文件系统**](./8-filesystem.md) - [**第八章 标准库: 文件系统**](./08-filesystem.md)
- [**第九章 其他杂项**](./9-others.md) - [**第九章 其他杂项**](./09-others.md)
+ 新类型 + 新类型
+ `long long int` + `long long int`
+ `noexcept` 的修饰和操作 + `noexcept` 的修饰和操作