【发布时间】:2011-07-05 20:57:57
【问题描述】:
我正在尝试运行一个简单的 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
如何让它编译没有错误?
【问题讨论】:
-
这是什么版本的 GNU c++?我从来没有看到过拼写正确的源文件名!
-
lambda 不是问题。你可以用其他东西替换它,你仍然会得到这些错误。
-
@Tomalak:我觉得它很有风格
-
@sehe:呵呵;他们在 C++0x 支持下引入了它,估计普通人写基本单词的能力会在新标准下一个小时后完全消失。
-
老实说,我很惊讶编译器没有替换等效的 ISO 令牌
Λάμβδα(或λ)以完全符合标准 :)
标签: c++ lambda c++11 compiler-errors