λ表达式下克++编译器在linux(lambda expression under g++ comp

2019-10-20 00:35发布

我需要使用C ++ find_if()lambda表达式,在我的VC编译它编译没有任何错误,我不能在linux编译:Debian的:克++ 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。

谢谢;

Answer 1:

问题1:这是一个版本的C ++相关的问题,尽管使用-std =的C ++ 0x标志,没有什么变化。

是。 lambda表达式不能在GCC 4.4的支持。 您将需要升级或安装4.5或更高版本。 请参阅这里了解更多详情。

问题2:我不能使用-std = C ++ 11的标志,尽管我安装在我的机器在gcc 4.7。

这不是一个问题。



Answer 2:

如果你们有兴趣在此,我发现了一种通过构建它你自己在每一个Linux系统连接到安装gcc-4.7:

http://gcc.gnu.org/install/



文章来源: lambda expression under g++ compiler in linux