我有时会遇到使用以下虚拟lambda捕获(而不是C ++ 17中的(void)x;
,... foo(int /* x */)
或... foo([[maybe_unused]] int x)
)的代码,以补救未使用的变量警告:
void foo(int bar)
{
[&x]{}();
}
现在,这并不是真正的补救方法,因为它将警告从当前范围传递到了lambda捕获,但是afaik,GCC并没有诊断程序来标记这一点,例如叮当声(as of 5.0)发出unused-lambda-capture
警告(如果已激活)。
$ clang++ -xc++ -std=c++11 -Wunused-lambda-capture - <<< "int main() { int x; [&x]{}(); }"
<stdin>:1:23: warning: lambda capture 'x' is not used [-Wunused-lambda-capture]
int main() { int x; [&x]{}(); }
^
1 warning generated.
在GCC项目中,如果可能的话,我可以在不诉诸Clang的情况下捕获上述构造。
答案 0 :(得分:2)
GCC目前确实不存在吗?
确实如此,正如非常古老但仍未解决的错误报告所涵盖的:
如果没有,那么该功能是否正在计划中/正在实施中?
基于对此错误报告没有采取任何措施(2012年并得到确认的,此后似乎没有发生太多事情),此信息可能不会很快添加。