标准并没有保证没有捕获的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关键字)。