具有模式匹配的函数式语言(有时?)有可能忽略一些绑定值,但是对于 C++17 结构化绑定,似乎没有办法做到这一点(std::ignore 与结构化绑定?)。建议是使用虚拟名称,但随后我们会收到有关未使用变量的警告。
使用 clang 和 gcc 的最新负责人,这是预期的事情,这很好而且有用,
[[maybe_unused]] auto x =4 ; // fine, no warning
[[maybe_unused]] auto [a,dummyb,dummyc] = std::tuple<int,int,float>(1,1,1.0f);
但我也希望这会奏效:
auto [g,[[maybe_unused]]dummyh,[[maybe_unused]]dymmyi] =
std::tuple<int,int,float>(1,1,1.0f);
是否有特定原因不能在这里使用属性?(在标准和技术上)。gcc 或 clang 都不接受这一点。
编辑,收集支持状态:(感谢godbolt/compiler explorer)。它按预期工作(也可能更早):
在https://gcc.godbolt.org/z/H2duYd在 Godbolt 中试用