Skip to content

Commit

Permalink
翻译小调整
Browse files Browse the repository at this point in the history
  • Loading branch information
adah1972 committed May 23, 2024
1 parent ff772b0 commit 409e27d
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions 08.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ auto {re,im} = sqrt(z); // sqrt() 返回复数值
标准库类型 `complex` 并没有暴露其内部表示。
在 C++17 中我们通过允许用户定义一系列 `get` 函数解决了这个问题,例如,`get<0>` 和 `get<1>` 实际上是假装将结果看作是 `tuple`。这能工作,但需要用户提供一些不优雅的重复样板式代码。关于潜在改进的讨论仍在继续,但没有明显的简化被纳入 C++20。
在 C++17 中我们通过允许用户定义一系列 `get` 函数解决了这个问题,`get<0>` 和 `get<1>`,实际上是把计算结果当成 `tuple`。这能工作,但需要用户提供一些不优雅的重复样板代码。关于潜在改进的讨论仍在继续,但没有明显的简化被纳入 C++20。
有人要求让这种方式也能适用于返回数组的函数和返回带位域的 `struct` 的函数。我们加入了对那些情况的支持,所以最终设计至少比原始提案复杂了一倍。
Expand Down Expand Up @@ -207,7 +207,7 @@ auto x3 = any_cast<int>(var3); // 转换 any
为了简化 `variant` 的使用,有一种访问者机制。首先我们需要一个辅助模板去定义一个重载集合:

```cpp
// 简单访问的样板
// 简单访问的样板代码
template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;
```
Expand All @@ -217,7 +217,7 @@ template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;
```cpp
using var_t = std::variant<int, long, double, std::string>; // variant 类型
// 简单访问的样板
// 简单访问的样板代码
template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;
Expand Down

0 comments on commit 409e27d

Please sign in to comment.