如何使lambda函数在gcc 5+; 我试图在我的Linux机器上运行C++中的一个非常简单的lambda函数(运行gcc5.4.0版),但是我得到了一个错误。

如何使lambda函数在gcc 5+; 我试图在我的Linux机器上运行C++中的一个非常简单的lambda函数(运行gcc5.4.0版),但是我得到了一个错误。,c++,gcc,lambda,C++,Gcc,Lambda,代码如下: #include <iostream> int main() { auto sayHello = [](int a, int b) -> int { return a + b; }; sayHello(55, 66); return 0; } 谁能告诉我怎么解决

代码如下:

#include <iostream>               

int main()                 
{                        
  auto sayHello = [](int a, int b) -> int      
  {     
    return a + b;           
  }; 

  sayHello(55, 66);    
  return 0;    
}

谁能告诉我怎么解决这个问题吗?谢谢

您需要将
-std=c++11
作为
g++
的标志之一:

g++ -std=c++11 main.cpp -o listener && ./listener 

现在,您正在将其作为
/listener
可执行文件的标志传递。

您需要将
-std=c++11
作为
g++
的标志之一:

g++ -std=c++11 main.cpp -o listener && ./listener 

现在,您正在将其作为
/listener
可执行文件的标志传递。

我不确定这是否是原因,但在您的命令中,您在错误的位置添加了-std=c++11。它应该是gcc的一个参数

我不确定这是否是原因,但在您的命令中,您在错误的位置添加了-std=c++11。它应该是gcc的一个参数

或者更好的是
-std=c++14
或者我个人最喜欢的
-std=c++1z
。sayHello(3,4)就像sayHello那样int@user1438832对对不起,输入错误。@DeiDei我建议不要在生产代码中使用临时标准版本。如果标准委员会改变了方向(就像他们对折叠表达式所做的那样),那么像1z这样的版本可能会表现出与新提议的标准不同的行为(折叠表达式和gcc/clang确实如此)。或者更好的是
-std=c++14
或者我个人最喜欢的
-std=c++1z
。你好(3,4)就像说你好一样int@user1438832对对不起,输入错误。@DeiDei我建议不要在生产代码中使用临时标准版本。如果标准委员会改变了方向(就像他们对折叠表达式所做的那样),那么像1z这样的版本可能会与新提议的标准表现不同(折叠表达式和gcc/clang确实如此)。如果你阅读链接的问题和答案,你会注意到他们提到了
-std=c++11
标志。弄清楚它剩下什么作为练习。我建议结束,因为这是一个微不足道的打字错误。@Walter我认为这是个好主意。如果你阅读链接的问题和答案,你会注意到他们提到了
-std=c++11
标志。找出它的作用,作为一个练习。我建议结束,因为这是一个微不足道的打字错误。@Walter,我认为这是一个好主意。