【发布时间】:2014-04-25 11:59:27
【问题描述】:
我需要使用 c++ find_if() lambda 表达式,在我的 vc 编译器中它编译没有任何错误,我无法在 linux:debian:g++4.4 中编译它:
-CPP函数:
istream_iterator<string> it = find_if(istream_iterator<string>(ss),
f,
[=](const string& str)
{return str == to_string(urlHash);});
-错误输出:
-error: expected primary-expression before '[' token
-error: expected primary-expression before '=' token
-error: expected primary-expression before ']' token
-error: expected primary-expression before 'const'
问题 1:这是与 c++ 版本相关的问题吗,尽管使用了 -std=c++0x 标志,但没有任何变化。
问题 2:我不能使用 -std=c++11 标志,尽管我在我的机器上安装了 gcc 4.7。
谢谢;
【问题讨论】:
-
Lambdas 是在 gcc4.5 中引入的。
-
@Malloc 我如何在 debian 中更新到 4.5 或更高版本
-
您使用online compiler 是否收到相同的错误,大多数支持C++11 ...Coliru 使得调整标志变得简单,并且
g++-4.6到g++-4.8也一样作为clang++?如果是这样,您能否提供其中一个的活生生的例子? -
嗨@ShafikYaghmour,当我用visual studio编译我的代码时,我没有收到任何错误,所以我猜我的代码正在工作。
-
@Reda 不幸的是,由于不同级别的标准支持、错误或扩展,各种编译器并不总是一致。这就是为什么提供MCVE 很重要,并且提供一个活生生的例子更好。