这是我的代码中的一个示例,使用std::optional:
Max = index(summary_max.value(), clusters[summary_max.value()]->Maximum().value());
Run Code Online (Sandbox Code Playgroud)
在这里,summary_max并且Maximum()是std::optional。这太冗长了。我只想打字index(summary_max, clusters[summary_max]->Maximum());
为什么不std::optional<T>支持隐式转换为T?是否有任何有效的、不可避免的理由?
如果您确定您的可选对象确实有值,您可以使用operator*运算符函数而不是value()成员函数:
Max = index(*summary_max,
*(clusters[*summary_max]->Maximum()));
// rant: looks more like C than C++ to me.
Run Code Online (Sandbox Code Playgroud)
但是当您使用存储值summary_max两次时,您可能只想在index(...)调用之前提取 (copy/const ref) 。
const auto& max_index = summary_max.value();
Max = index(max_index, *(clusters[max_index]->Maximum()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |