gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:09:46 31 4
gpt4 key购买 nike

我有一小段涉及 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com