繁体   English   中英

g ++:预期在'['标记之前的主表达式

[英]g++: expected primary-expression before ‘[’ token

我正在尝试查找向量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)

GCC 4.4不支持Lambda

升级您的编译器。 您需要GCC 4.5或更高版本,但如果可以的话,请进入现代。

您的编译器不支持lambda表达式。 编译器不支持C ++ 11或新的传入标准附带的所有功能。 因此,您需要检查编译器支持哪些标准。 GCC 4.4.7上的编译屏幕截图

您可以查看是否我选择了gcc-4.4.7相同的错误(lambda表达式错误),但是如果我选择了gcc-4.5.3

GCC 4.5.2上的编译屏幕截图

没错 总之,您必须更改编译器(> = gcc-4.5)以使用lamda表达式。

GCC中的C ++标准支持

GCC 4.4不支持Lambda。 您可以将编译器升级到4.5或更高版本,或使用以下功能:

bool compFun(int i) {
    return i == 1;
}
...
bool res = all_of(a.begin(), a.end(), compFun);

这是一个实时示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM