为什么我在遍历 yaml_cpp 节点时看到这个 CLion 错误?

Why I see this CLion error when iterating over yaml_cpp node?

我对包含项目列表的 yaml-cpp 节点进行了以下简单迭代:

for (const auto &group_entry: node["groups"]) { /*...*/ }

代码按预期编译和工作,但在 CLion IDE 中它被视为错误,声称“const YAML::Node' 不是有效的范围类型”。这有什么问题吗?如果没有,我该如何删除这个烦人的亮点?这是一个 C++17 项目。

一般来说,编译器更能判断某些代码是否有效。您的代码非常好。

错误消息还提示我们似乎是什么问题:它谈到了 范围类型,这在这种情况下根本不是问题(C++ 20 ranges 库确实存在,但与此处无关)。您使用的 range-for 只需要 range-expression 是一个数组,定义了 beginend 函数,或者是 braced-init-list.

所以我们所看到的可能是 CLion 没有正确检查此限制的结果,可能是通过重新使用 JetBrains 的其他 IDE 中不适合 C++ 的代码。因此,issue you created 是消除此错误的合适方法。