是否可以将未包装的元组的一个元素标记为未使用

时间:2019-02-15 08:48:26

标签: c++ c++17

此问题与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();
  }
}

我无法选择吗?

0 个答案:

没有答案