小编Wil*_*nan的帖子

C++ 中的链可选

如何避免在 C++ 中使用链式选项嵌套 if 语句?

例如,如果类型 A 包含 anstd::optional<B> b和类型 B an std::optional<C> c,我希望能够编写如下内容:

const auto v = if_exists(if_exists(a->b)->c);
Run Code Online (Sandbox Code Playgroud)

如果 b 或 c 是空可选项,则 v 将从 c 或空可选项中获取值。

我认为这样嵌套 ifs 会更好:

if (a->b) {
 const auto b = *(a->b);
 if (b->c) {
  const auto c = *(b->c);
 }
}
Run Code Online (Sandbox Code Playgroud)

以下问题似乎朝这个方向发展,但我不确定如何将其调整到我的用例中:Haskell style "Maybe" type & *chaining* in C++11

c++ optional c++17

7
推荐指数
1
解决办法
1395
查看次数

标签 统计

c++ ×1

c++17 ×1

optional ×1