【发布时间】:2020-02-09 08:39:05
【问题描述】:
此代码可以编译并运行,但会出现“未使用的变量 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 文件中的其他 for range 存在相同问题。这是一个普遍的问题,并不局限于特定的行。
-
只是为了测试,这行编译得很好:
std::ignore = 0;
所以 gcc 可以识别 std::ignore,它只是在 for 范围内无法识别。
已阅读 this good question and answer 关于忽略结构化绑定的内容。
有人遇到类似问题吗?
谢谢!
【问题讨论】:
标签: c++ gcc eclipse-cdt structured-bindings