相关疑难解决方法(0)

初始化在三元运算符中捕获lambda

我想用以下方式创建一个lambda:

auto l1 = condition ?
          [](){ return true; } :
          [number](){ return number == 123; };
Run Code Online (Sandbox Code Playgroud)

但是,我收到了错误:

operands to ?: have different types ‘main()::<lambda()>’ and ‘main()::<lambda()>’
Run Code Online (Sandbox Code Playgroud)

显然,类型似乎是相同的.我想,number只捕获一个lambdas可能是一个问题,但我得到了同样的错误:

//check if capturing number in both lambdas would help
auto l2 = condition ?
          [number](){ return true; } :
          [number](){ return number == 123; };
//maybe the first lambda capture was optimised out? let's make sure:
auto l3 = condition ?
          [number](){ return number != 123; } :
          [number](){ return …
Run Code Online (Sandbox Code Playgroud)

c++ lambda language-lawyer c++11 c++14

20
推荐指数
3
解决办法
1934
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

lambda ×1

language-lawyer ×1