此代码编译并运行,并带有“未使用的变量 i”警告:
for(auto [camera, i]: landmark->getObservations())
camerasToCounts[camera]++;
我想忽略 i,所以我将其替换为std::ignore
. 以下代码无法编译:
...
#include <tuple>
...
for(auto [camera, std::ignore]: landmark->getObservations())
camerasToCounts[camera]++;
出现此错误:
error: expected ‘]’ before ‘::’ token
这个警告:
warning: unused variable ‘std’ [-Wunused-variable]
因为它无法识别 std::ignore。
一些上下文:
- 我将 C++17 与 gcc 7.4.0 和 Eclipse CDT 一起使用。
- 语法检查器显示与编译器相同的错误。这是连贯的。
- 同一项目的许多 cpp 文件中的其他范围也存在同样的问题。这是一个普遍的问题,而不是特别局限于那条特定的线。
只是为了测试,这一行编译得很好:
标准::忽略 = 0;
所以 gcc 识别 std::ignore,它只是在范围内没有这样做。
已经阅读了这个关于忽略结构化绑定的好问题和答案。
有没有人有类似的问题?
谢谢!