Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么是c++;Lambda表达式不工作 我对这个特性非常陌生,我只是读了C++中的lambda表达式,并试图用一个简单的程序实现它。 int main() { std::string name; int a = 5; std::cout << "What is your name? "; getline (std::cin, name); for([&](){a = 7;};a > 0; a--) { std::cout << "Hello, " << name << "!\n"; } } intmain() { std::字符串名; INTA=5; 标准::cout 0;a--) { std::cout_C++_C++11_Lambda - Fatal编程技术网

为什么是c++;Lambda表达式不工作 我对这个特性非常陌生,我只是读了C++中的lambda表达式,并试图用一个简单的程序实现它。 int main() { std::string name; int a = 5; std::cout << "What is your name? "; getline (std::cin, name); for([&](){a = 7;};a > 0; a--) { std::cout << "Hello, " << name << "!\n"; } } intmain() { std::字符串名; INTA=5; 标准::cout 0;a--) { std::cout

为什么是c++;Lambda表达式不工作 我对这个特性非常陌生,我只是读了C++中的lambda表达式,并试图用一个简单的程序实现它。 int main() { std::string name; int a = 5; std::cout << "What is your name? "; getline (std::cin, name); for([&](){a = 7;};a > 0; a--) { std::cout << "Hello, " << name << "!\n"; } } intmain() { std::字符串名; INTA=5; 标准::cout 0;a--) { std::cout,c++,c++11,lambda,C++,C++11,Lambda,如果你调用它,你的假设是正确的 [&]:通过引用隐式捕获。可以使用所有本地名称。所有本地变量都是 通过引用访问 您可以访问局部变量,但不会调用lambda本身。这就是代码中发生的情况: Lambda表达式不带捕获->functionPtr->bool(对于非空functionPtr为true) 其中->是隐式转换 相反,请执行(lambdaExpression)(或lambdaExpression()来调用它。创建lambda的可能副本并将其丢弃。您需要调用()运算符来运行它。@RaymondC

如果你调用它,你的假设是正确的

[&]:通过引用隐式捕获。可以使用所有本地名称。所有本地变量都是 通过引用访问

您可以访问局部变量,但不会调用lambda本身。这就是代码中发生的情况:

Lambda表达式不带捕获->functionPtr->bool(对于非空functionPtr为true)

其中
->
是隐式转换


相反,请执行
(lambdaExpression)(
lambdaExpression()
来调用它。

创建lambda的可能副本并将其丢弃。您需要调用()运算符来运行它。@RaymondChen获得了它。。解决了问题。。谢谢。:)