此问题与c ++ 17及更高版本有关,后者引入了[[maybe_unused]]
属性。
我可以将maybe_unused
应用于整个未包装的元组,如下所示:
for ([[maybe_unused]] auto &[key, weak] : connection_cache_)
{
if (auto locked = lock(weak); locked)
{
locked->cancel();
}
}
但是,标记未使用的key
无效(至少在gcc-8上):
for (auto &[ [[maybe_unused]] key, weak] : connection_cache_)
{
if (auto locked = lock(weak); locked)
{
locked->cancel();
}
}
这使我可以选择不使用属性,也可以不使用无操作来满足确保使用-Wall -Wextra -pedantic
进行编译时没有警告的要求,这是我的代码库的规范:
for (auto &[key, weak] : connection_cache_)
{
boost::ignore_unused(key);
if (auto locked = lock(weak); locked)
{
locked->cancel();
}
}
我无法选择吗?