【问题标题】:What does this do in C++? []() {}()这在 C++ 中有什么作用? []() {}()
【发布时间】:2022-08-02 14:17:47
【问题描述】:

我正在对代码覆盖率进行单元测试,确保每个可能的代码路径都由单元测试执行。

我发现只包含一个 break 的 switch/case 元素可以设置断点,但是 break 永远不会被击中,控制只是跳转到 switch 的末尾,大概是因为编译器优化。

一位同事争辩说我没有对该路径进行充分的单元测试。

所以,我搜索并找到了一个 S.O 问题——我再也找不到了——关于什么都不做的 C++ 代码。唯一没有针对生成编译器或静态代码分析错误进行优化的答案是[]() {}()

这是有效的,因为它的断点会被命中。

问题解决了,我猜,但这实际上是做什么的?

  • [](){} 是一个什么都不做的 lambda 函数。额外的() 调用该函数。但是不知道为什么不能优化。

标签: c++


【解决方案1】:

这是一个空的 lambda,它被执行并且什么都不做。通常在调试中设置断点,在函数或另一个代码块的末尾。

[] () {   } ()
^^^ ------------------- no captures
   ^^^ ---------------- no parameters
        ^^^------------ function body
             ^^ ------- call operator (operator()) with no arguments.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多