我试图找到向量y的所有元素是否等于1.以下代码在Visual Studio中工作正常但在linux中使用g ++(g ++ -std = c ++ 0x)它会给我这个错误:预期在'['标记
之前的主要表达式bool x = all_of(y.begin(), y.end(), [](unsigned char j) {return j == 1;});
任何帮助都将不胜感激。
我的gcc版本是:g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)
答案 0 :(得分:3)
Lambdas are not supported in GCC 4.4
升级您的编译器。你需要GCC 4.5或更高版本,但如果可以的话可以到现代。
答案 1 :(得分:2)
您的编译器不支持lambda表达式。编译器不支持C ++ 11或新传入标准附带的所有功能。因此,您需要检查编译器支持的标准。
你可以看看我是否选择了gcc-4.4.7相同的错误(lambda表达式错误)但是如果我选择gcc-4.5.3
没有错误。总之,您必须更改编译器(> = gcc-4.5)才能使用lamda表达式。
答案 2 :(得分:1)
GCC 4.4不支持Lambda。您可以将编译器升级到4.5或更高版本,或使用函数:
Meteor.users._transform = function (user) { ... return user; }