我已经阅读了 C++ 中 lambda 表达式的解释,并且了解了它们是如何工作的,以及需要如何声明lambda 表达式(省略了许多细节):
[lambda-capture opt](参数声明子句)复合语句。
我发现你可以在另一个 lambda 定义中定义一个 lambda,如下所示:
[lambda1{[](){
return 123;
}}]{
return lambda1();
}
Run Code Online (Sandbox Code Playgroud)
这有效:
cout << [lambda1{[](){
return 123;
}}]{
return lambda1();
}();
Run Code Online (Sandbox Code Playgroud)
这个没有:
cout << prova{[](){
return "hello";
}}();
Run Code Online (Sandbox Code Playgroud)
为什么我可以像第二个例子一样定义它lambda1{...},而不是第三个例子?