我想使用结构绑定遍历地图,忽略关键:
for (auto& [unused, val] : my_map)
do_something(val);
我用 gcc-7.2.0 尝试了不同的选项:
// The warning is issued
for ([[maybe_unused]] auto& [unused, val] : my_map)
do_something(val);
// Syntax error
for (auto& [[[maybe_unused]] unused, val] : my_map)
do_something(val);
// The same two combinations above with [[gnu::unused]].
似乎[[maybe_unused]]
尚未为结构绑定实现该属性。
有什么简单的解决方案吗?任何宏、gcc/gnu 扩展或任何临时禁止该特定警告的编译指示对我来说都可以;例如,在我使用 range-based-for 的整个函数体中禁用它,因为我使用的函数非常短(它基本上是两个具有精确行为的不同映射上的 range-for-loop )。
我用来编译项目的(相关)选项是:
-std=c++17 -Wall -Wextra -Werror -pedantic -pedantic-errors
我目前要做的是,但这很丑:
for (auto& [unused, val] : my_map)
(void)unused, do_something(val);