diff --git a/08.md b/08.md index 369bd61..15e305a 100644 --- a/08.md +++ b/08.md @@ -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` 的函数。我们加入了对那些情况的支持,所以最终设计至少比原始提案复杂了一倍。 @@ -207,7 +207,7 @@ auto x3 = any_cast(var3); // 转换 any 为了简化 `variant` 的使用,有一种访问者机制。首先我们需要一个辅助模板去定义一个重载集合: ```cpp -// 简单访问的样板: +// 简单访问的样板代码: template struct overloaded : Ts... { using Ts::operator()...; }; template overloaded(Ts...) -> overloaded; ``` @@ -217,7 +217,7 @@ template overloaded(Ts...) -> overloaded; ```cpp using var_t = std::variant; // variant 类型 -// 简单访问的样板: +// 简单访问的样板代码: template struct overloaded : Ts... { using Ts::operator()...; }; template overloaded(Ts...) -> overloaded;