使用 lambda 编译简单的 C++0x 程序时遇到问题

发布于 2024-11-19 00:02:56 字数 897 浏览 4 评论 0原文

我正在尝试运行一个简单的 lambda 示例。

// lambda.cpp
#include <functional>
//#include <tr1/functional> 

int main()
{
   // Assign the same lambda expression to a function object.
   function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
   //function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
}

我像这样编译它:

$ g++ -std=c++0x -fpermissive lamdas.cpp
lambdas.cpp: In function ‘int main()’:    
lambdas.cpp:10: error: expected primary-expression before ‘=’ token
lambdas.cpp:10: error: expected primary-expression before ‘[’ token
lambdas.cpp:10: error: expected primary-expression before ‘]’ token
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected ‘;’ before ‘{’ token

如何让它编译没有错误?

I am trying to run a simple lambda example.

// lambda.cpp
#include <functional>
//#include <tr1/functional> 

int main()
{
   // Assign the same lambda expression to a function object.
   function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
   //function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
}

I'm compiling it like this:

$ g++ -std=c++0x -fpermissive lamdas.cpp
lambdas.cpp: In function ‘int main()’:    
lambdas.cpp:10: error: expected primary-expression before ‘=’ token
lambdas.cpp:10: error: expected primary-expression before ‘[’ token
lambdas.cpp:10: error: expected primary-expression before ‘]’ token
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected primary-expression before ‘int’
lambdas.cpp:10: error: expected ‘;’ before ‘{’ token

How do I get it to compile with no errors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

温折酒 2024-11-26 00:02:56

您的意思是 std::function 吗?

标准库功能位于 std 命名空间中。

同样有趣的是,你的复制/粘贴显然是假的;您编写了“lamdas.cpp”,然后编译了“lambdas.cpp”!

Did you mean std::function?

Standard library features live in the std namespace.

It's also interesting that your copy/paste is clearly fake; you wrote "lamdas.cpp" then compiled "lambdas.cpp"!

一萌ing 2024-11-26 00:02:56
std::function<int (int, int)> f2 = [] (int x, int y) { return x + y; };

或者,可能更好

auto f2 = [] (int x, int y) { return x + y; };
std::function<int (int, int)> f2 = [] (int x, int y) { return x + y; };

or, probably better

auto f2 = [] (int x, int y) { return x + y; };
往日 2024-11-26 00:02:56

在我看来你好像忘记了 -std=c++0x。

It looks to me like you forgot -std=c++0x.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文