有没有办法在IF中写入lambda表达式并捕获所有内容?

时间:2016-08-19 21:18:49

标签: c++ lambda

我的理解是,如果我在lambda表达式中使用语法[&],那么我的lambda表达式可以访问函数的周围变量和参数。

因此,我尝试编写以下(简化)代码

if ( [&]() 
     {
        bool b = false;
        return b;
     }
   )
  {
     // Do something in TRUE part of if statement
  }

但我收到错误“类型'lambda at ...'的值不能在上下文中转换为'bool'

对此问题有所了解。

非常感谢, d

1 个答案:

答案 0 :(得分:13)

你需要调用你正在构建的lambda。它不会被隐式调用。

if ([&]() { /*...*/ return b; }()) {
    //                         ^^ call the lambda
    // ...
}