我想知道为什么我不能在 lambda 的捕获列表中使用 [[maybe_unused]] 属性。是否有原因导致捕获列表的变量无法标记为 [[maybe_unused]]?这将避免捕获所有变量,即 [&],在这种情况下:
auto lambda = [&x, [[maybe_unused]] &y](){
if constexpr( x >= 0) {
return x;
}
else {
return y;
}
}
Run Code Online (Sandbox Code Playgroud)
在 x >= 0 的每种情况下,编译器都会警告未使用 y。但如果 x < 0,则不会发出警告。我的第一次尝试是使用 [[maybe_unused]],但这是不可能的。
我的问题:是否有原因,为什么我不能在 lambda 捕获列表中使用 [[maybe_unused]] 属性?
我在邮件列表上也问了同样的问题。亚瑟·奥德怀尔 (Arthur O'Dwyer) 的回答是:
啊,是的,这可能是 [[maybe_unused]] 可能适用的地方。但是,现在您可以轻松地编写
Run Code Online (Sandbox Code Playgroud)(void)a;抑制警告:https://godbolt.org/z/7ZHSYz这不会让代码变得混乱(因此更容易阅读和维护),并且也可以在现有编译器中工作(因此更容易部署)。
“是的,但是使用这种逻辑,[[maybe_unused]] 不是完全 多余和不必要的,并且永远不应该标准化吗?” 据我所知,是的。
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |