标准并没有保证没有捕获的lambda表达式一定为空。如果没有捕获的变量,lambda表达式是可以为空的。然而,lambda表达式也可以捕获变量,并且在代码中使用它们。
以下是一个示例代码,展示了一个捕获变量的lambda表达式:
#include
#include
int main() {
int x = 5;
std::function lambda = [x]() { return x * 2; };
std::cout << lambda() << std::endl; // 输出: 10
return 0;
}
在这个例子中,lambda表达式捕获了变量x
,并且在表达式中使用它。lambda表达式返回x
的两倍。
注意,捕获的变量在lambda表达式中不可修改(除非使用mutable
关键字)。