首页 > 解决方案 > 是否可以将解压缩元组的一个元素标记为未使用

问题描述

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

这让我可以选择不使用属性或使用 no-op 来确保在编译时没有警告,-Wall -Wextra -pedantic这是我的代码库的标准:

for (auto &[key, weak] : connection_cache_)
{
  boost::ignore_unused(key);
  if (auto locked = lock(weak); locked)
  {
    locked->cancel();
  }
}

我没有选择吗?

标签: c++c++17

解决方案


推荐阅读