Skip to content

Commit 8c5d362

Browse files
authored
Update std-visit-cpp-for-the-antiquated-2.md
1 parent 6acf1dc commit 8c5d362

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

content/Blog/std-visit-cpp-for-the-antiquated-2.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,19 @@ int main() {
6161
### 代码分析
6262

6363
1. **`std::variant<int, float, std::string>`**
64-
- 这是一个类型安全的联合体,可以存储 `int``float``std::string` 中的任意一种类型。
65-
- 将多个 `std::variant` 存储在 `std::vector` 中,形成一个统一的容器。
64+
- 这是一个类型安全的联合体,可以存储 `int``float``std::string` 中的任意一种类型。
65+
- 将多个 `std::variant` 存储在 `std::vector` 中,形成一个统一的容器。
6666

6767
2. **`std::visit`**
68-
- 使用 `std::visit` 访问每个 `std::variant` 元素。
69-
- 传入一个**泛型 Lambda 表达式**,通过 `if constexpr` 在编译时分发到不同的分支,处理不同类型的值。
68+
- 使用 `std::visit` 访问每个 `std::variant` 元素。
69+
- 传入一个**泛型 Lambda 表达式**,通过 `if constexpr` 在编译时分发到不同的分支,处理不同类型的值。
7070

7171
3. **`if constexpr``std::is_same_v`**
72-
- 使用 `std::is_same_v` 判断存储的实际类型。
73-
- 根据类型进行不同的输出操作。
72+
- 使用 `std::is_same_v` 判断存储的实际类型。
73+
- 根据类型进行不同的输出操作。
7474

7575
4. **类型安全**
76-
- 如果添加一个未处理的类型,编译器会在 `static_assert` 中报错,提醒开发者补充处理逻辑。
76+
- 如果添加一个未处理的类型,编译器会在 `static_assert` 中报错,提醒开发者补充处理逻辑。
7777

7878
## 使用传统C++实现std::visit
7979

@@ -143,13 +143,13 @@ int main() {
143143
实现 `std::visit` 的关键在于以下几个方面:
144144
145145
* **类型索引 (`index()`)**
146-
根据传入的 `std::variant` 参数类型,确定其在类型集合中的索引。
146+
根据传入的 `std::variant` 参数类型,确定其在类型集合中的索引。
147147
148148
* **类型访问 (`std::get<T>`)**
149-
根据传入的模板类型 `T`,获取存储的值。如果类型不匹配,抛出异常,确保类型安全。
149+
根据传入的模板类型 `T`,获取存储的值。如果类型不匹配,抛出异常,确保类型安全。
150150
151151
* **类型分派 (`std::visit`)**
152-
根据当前存储的类型,调用 `Visitor` 中对应的 `operator()` 方法。可以通过 `switch-case` 或模板匹配来实现类型分发。
152+
根据当前存储的类型,调用 `Visitor` 中对应的 `operator()` 方法。可以通过 `switch-case` 或模板匹配来实现类型分发。
153153
154154
### 代码实现0 - 基本框架
155155

0 commit comments

Comments
 (0)