代码之家  ›  专栏  ›  技术社区  ›  dfrib

GCC中是否有“铿锵++:-Wunused lambda capture”等效警告?

  •  1
  • dfrib  · 技术社区  · 8 年前

    出身背景

    我有时会遇到使用以下虚拟lambda捕获的代码(而不是。 (void)x; , ... foo(int /* x */) ... foo([[maybe_unused]] int x) 在C++17)中,为了纠正未使用的变量警告:

    void foo(int x)
    {
        [&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项目中,如果可能的话,我将能够捕捉到上面的构造,而无需借助叮当声。

    问题

    • GCC目前是否真的没有同等标准?
    • 如果不是,这是目前计划实施/正在实施的功能吗?
    0 回复  |  直到 6 年前
        1
  •  2
  •   dfrib    6 年前

    这是GCC的开放式错误报告

    GCC目前是否真的没有同等标准?

    这确实是事实,正如非常古老但仍然开放的bug报告所述:

    如果不是,这是目前计划实施/正在实施的功能吗?

    基于对该错误报告(已报告)缺乏行动 并证实 在2012年(自那以后似乎没有太多发生),这一点可能不会很快增加。