c++ - VS Express 2012 C++ lambda Intellisense 错误?

标签 c++ visual-studio-2012 lambda

我有一小段涉及 lambda 的代码可以正常编译,但 Intellisense 会抛出错误。

items.erase(remove_if(begin(items), end(items),
[](const Item& mItem){ return mItem.booleanMember; }),
end(items));

错误是

IntelliSense: more than one conversion function from "lambda []bool (const Item &mItem)->bool" to "<error-type>" applies:
        function "lambda []bool (const Item &mItem)->bool::operator bool (*)(const Item &mItem)() const"
        function "lambda []bool (const Item &mItem)->bool::operator bool (*)(const Item &mItem)() const"
        function "lambda []bool (const Item &mItem)->bool::operator bool (*)(const Item &mItem)() const"   

如果我把代码改成

items.erase(remove_if(begin(items), end(items),
[&](const Item& mItem)->bool{ return mItem.booleanMember; }),
end(items));

然后错误消失了。我对此很好,但我不完全知道发生了什么。我知道我没有明确指定 bool 返回值(并且通过这个更改的代码,我是),但我认为如果 lambda 中只有一行,我不需要这样做。另外,我不知道 [&] 在做什么。

最佳答案

这是一个 IntelliSense 错误;它已在 Visual Studio 2013 中修复。您可以忽略错误的错误。

关于c++ - VS Express 2012 C++ lambda Intellisense 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959119/

相关文章:

c++ - std::copy 3维数组到3维 vector

c++ - 分布和内部状态

c++ - 使用 haskell 构建动态库并在 C++ 中使用它

wcf - 带有 RIA WCF 项目的 Silverlight 无法添加常规 WCF 服务引用

c# - 如何取消选择按钮 `Select all` 而不是所有项目?

amazon-web-services - 如何在 lambda 中运行同步 dynamodb 请求?

c++ - 如何使用特定对象的函数指针调用成员函数

c# - 无法调用服务引用?

java - AspectJ 关于 lambda 表达式的建议 : know where the lambda expression came from

haskell - 手动推断类型 (\x y z -> (x y) z)