我想用以下方式创建一个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)