如何使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,我认为这是一个好主意。