Skip to content

Commit 26a3cd6

Browse files
committed
规范和更改md文件
1 parent 8aa7d02 commit 26a3cd6

File tree

6 files changed

+55
-63
lines changed

6 files changed

+55
-63
lines changed

README.md

+49-51
Original file line numberDiff line numberDiff line change
@@ -21,76 +21,74 @@
2121

2222
- [前言](#前言)
2323
- [`01` 实现管道运算符](#01-实现管道运算符)
24-
- [运行结果](#运行结果)
25-
- [群友提交](#群友提交)
26-
- [标准答案](#标准答案)
27-
- [解析](#解析)
24+
+ [运行结果](#运行结果)
25+
+ [群友提交](#群友提交-0)
26+
+ [标准答案](#标准答案-0)
27+
+ [解析](#解析-0)
2828
- [`02` 实现自定义字面量 `_f`](#02-实现自定义字面量-_f)
29-
- [运行结果](#运行结果-1)
30-
- [群友提交](#群友提交-1)
31-
- [标准答案](#标准答案-1)
32-
- [解析](#解析-1)
29+
+ [运行结果](#运行结果-1)
30+
+ [群友提交](#群友提交-1)
31+
+ [标准答案](#标准答案-1)
32+
+ [解析](#解析-1)
3333
- [`03` 实现 `print` 以及特化 `std::formatter`](#03-实现-print-以及特化-stdformatter)
34-
- [运行结果](#运行结果-2)
35-
- [群友提交](#群友提交-2)
36-
- [标准答案](#标准答案-2)
37-
- [解析](#解析-2)
34+
+ [运行结果](#运行结果-2)
35+
+ [群友提交](#群友提交-2)
36+
+ [标准答案](#标准答案-2)
37+
+ [解析](#解析-2)
3838
- [`04` 给定类模板修改,让其对每一个不同类型实例化有不同 ID](#04-给定类模板修改让其对每一个不同类型实例化有不同-id)
39-
- [运行结果](#运行结果-3)
40-
- [群友提交](#群友提交-3)
41-
- [标准答案](#标准答案-3)
39+
+ [运行结果](#运行结果-3)
40+
+ [群友提交](#群友提交-3)
41+
+ [标准答案](#标准答案-3)
4242
- [`05` 实现 `scope_guard` 类型](#05-实现-scope_guard-类型)
43-
- [运行结果](#运行结果-4)
44-
- [群友提交](#群友提交-4)
45-
- [标准答案](#标准答案-4)
43+
+ [运行结果](#运行结果-4)
44+
+ [群友提交](#群友提交-4)
45+
+ [标准答案](#标准答案-4)
4646
- [`06` 解释 `std::atomic` 初始化](#06-解释-stdatomic-初始化)
47-
- [群友提交](#群友提交-5)
48-
- [标准答案](#标准答案-5)
47+
+ [群友提交](#群友提交-5)
48+
+ [标准答案](#标准答案-5)
4949
- [`07` `throw new MyException`](#07-throw-new-myexception)
50-
- [运行结果](#运行结果-5)
51-
- [群友提交](#群友提交-6)
52-
- [标准答案](#标准答案-6)
50+
+ [运行结果](#运行结果-5)
51+
+ [群友提交](#群友提交-6)
52+
+ [标准答案](#标准答案-6)
5353
- [`08` 定义`array`推导指引](#08-定义array推导指引)
54-
- [运行结果](#运行结果-6)
55-
- [群友提交](#群友提交-7)
56-
- [标准答案](#标准答案-7)
54+
+ [运行结果](#运行结果-6)
55+
+ [群友提交](#群友提交-7)
56+
+ [标准答案](#标准答案-7)
5757
- [`09` 名字查找的问题](#09-名字查找的问题)
58-
- [运行结果](#运行结果-7)
59-
- [群友提交](#群友提交-8)
60-
- [标准答案](#标准答案-8)
58+
+ [运行结果](#运行结果-7)
59+
+ [群友提交](#群友提交-8)
60+
+ [标准答案](#标准答案-8)
6161
- [`10` 遍历任意类数据成员](#10-遍历任意类数据成员)
62-
- [运行结果](#运行结果-8)
63-
- [群友提交](#群友提交-9)
64-
- [标准答案](#标准答案-9)
62+
+ [运行结果](#运行结果-8)
63+
+ [群友提交](#群友提交-9)
64+
+ [标准答案](#标准答案-9)
6565
- [`C++17` 写法](#c17-写法)
6666
- [`C++20` 写法](#c20-写法)
67-
- [无法处理引用类型以及不可移动类型](#无法处理引用类型以及不可移动类型)
68-
- [补充说明](#补充说明)
67+
+ [补充说明](#补充说明-0)
6968
- [`11` `emplace_back()` 的问题](#11-emplace_back-的问题)
70-
- [群友提交](#群友提交-10)
71-
- [标准答案](#标准答案-10)
69+
+ [群友提交](#群友提交-10)
70+
+ [标准答案](#标准答案-10)
7271
- [`12` 实现`make_vector()`](#12-实现make_vector)
73-
- [运行结果](#运行结果-9)
74-
- [群友提交](#群友提交-11)
75-
- [标准答案](#标准答案-11)
72+
+ [运行结果](#运行结果-9)
73+
+ [群友提交](#群友提交-11)
74+
+ [标准答案](#标准答案-11)
7675
- [运行结果](#运行结果-10)
7776
- [`13` 关于 `return std::move`](#13-关于-return-stdmove)
78-
- [群友提交](#群友提交-12)
79-
- [标准答案](#标准答案-12)
77+
+ [群友提交](#群友提交-12)
78+
+ [标准答案](#标准答案-12)
8079
- [`14` 以特殊方法修改命名空间中声明的对象](#14-以特殊方法修改命名空间中声明的对象)
81-
- [运行结果](#运行结果-11)
82-
- [群友提交](#群友提交-13)
83-
- [标准答案](#标准答案-13)
80+
+ [运行结果](#运行结果-11)
81+
+ [群友提交](#群友提交-13)
82+
+ [标准答案](#标准答案-13)
8483
- [利用符号来解决](#利用符号来解决)
8584
- [直接修改内存](#直接修改内存)
8685
- [利用名字查找规则](#利用名字查找规则)
8786
- [`15` 表达式模板](#15-表达式模板)
88-
- [运行结果](#运行结果-12)
89-
- [群友提交](#群友提交-14)
90-
- [标准答案](#标准答案-14)
91-
- [`16` 制造传递函数模板的宏](#16-制造传递函数模板的宏)
92-
- [群友提交](#群友提交-15)
93-
- [标准答案](#标准答案-15)
87+
+ [群友提交](#群友提交-14)
88+
+ [标准答案](#标准答案-14)
89+
- [`16` 通透函数宏](#16-制造传递函数模板的宏)
90+
+ [群友提交](#群友提交-15)
91+
+ [标准答案](#标准答案-15)
9492

9593
</details>
9694

@@ -441,7 +439,7 @@ impl::Helper operator""_f(const char* s, std::size_t len) noexcept {
441439
}
442440
```
443441
444-
`operator""_f` 本身非常简单,只是用来把传入的参数(格式字符串)和长度,构造 `mpl::Helper` 对象再返回。`Helper` 类型使用了一个 `string_veiw` 作为数据成员,存储了格式字符串,以供后面格式化使用。
442+
`operator""_f` 本身非常简单,只是用来把传入的参数(格式字符串)和长度,构造 `impl::Helper` 对象再返回。`Helper` 类型使用了一个 `string_view` 作为数据成员,存储了格式字符串,以供后面格式化使用。
445443
446444
**重点只在于 `operator()`。** 它是一个变参模板,用来接取我们传入的任意类型和个数的参数,然后返回格式化后的字符串。
447445

src/群友提交/第03题/mq卢瑟.cxx

+6-8
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@ void print(std::string_view format_str, Args const&... args) {
1010
std::cout << std::vformat(format_str, std::make_format_args(std::forward<decltype(args)>(args)...));
1111
}
1212

13-
namespace std {
14-
template<>
15-
struct formatter<Frac> : formatter<string> {
16-
auto format(Frac const& f, format_context& ctx) const {
17-
return format_to(ctx.out(), "{}/{}", f.a, f.b);
18-
}
19-
};
20-
}
13+
template<>
14+
struct std::formatter<Frac> : std::formatter<string> {
15+
auto format(Frac const& f, format_context& ctx) const {
16+
return std::format_to(ctx.out(), "{}/{}", f.a, f.b);
17+
}
18+
};
2119

2220
int main() {
2321
const Frac f{ 1, 10 };

src/群友提交/第06题/mq卢瑟.md

-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,3 @@ std::atomic<int> n = std::atomic<int>(6);
1717
因此在 C++17 之前的版本,理所应当应该查找检测复制/移动 构造函数,满足要求才可以通过编译。但是实际上 `atomic` 的复制构造被删除(因为三/五/零法则,移动构造也被抑制生成)了,所以自然而然地不允许。
1818

1919
然而在 C++17 起,复制消除变为强制要求。纯右值表达式作为构造对象的参数,不会再调用移动构造,也不会去检测,而是原位构造。
20-

src/群友提交/第09题/mq卢瑟.md

-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@
1111
`t()` 中的 `this->f()` 是无限定的待决调用,会在明确它的模板实参之时再次进行关于 `f` 的名字查找,并且会查找基类,因此找到了基类的成员函数 `f()`
1212

1313
`t2()` 中的 `f()` 是无限定的非待决调用,检查该模板的定义时将进行关于 `f` 的无限定的名字查找(无法查找父类的定义),按照正常的查看顺序,先类内(查找不到),然后全局(找到)。
14-

src/群友提交/第11题/mq卢瑟.md

-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
C++20 前不允许使用 `()` 初始化聚合体。
2-

src/群友提交/第13题/mq卢瑟.md

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
1. `std::move()` 个 jb 啊,不 move 也能复制消除,move 还可能影响优化。
22
2. 有问题,悬垂引用。
33
3. 没有问题,类数据成员不是隐式可移动实体,需要通过 `std::move` 让重载决议选择移动构造。
4-

0 commit comments

Comments
 (0)