小编Lor*_*ada的帖子

为什么可以使用 lambda 表达式的捕获列表中的名称定义 lambda,但不能在其外部定义名称?

我已经阅读了 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{...},而不是第三个例子?

c++ syntax lambda

4
推荐指数
1
解决办法
108
查看次数

标签 统计

c++ ×1

lambda ×1

syntax ×1