gpt4 book ai didi

c++ - lambda 函数抛出错误

转载 作者:行者123 更新时间:2023-11-30 00:48:24 24 4
gpt4 key购买 nike

我在构建代码时收到此错误消息,

“已指定为具有 void 返回类型的 lambda 不能返回值”

bool StockCheck::InStock(const Shop& shop) const
{
return std::any_of(m_products, [&shop, this](const std::unique_ptr<SelectedProduct>& selected)
{
auto inStock = selected->ProductInStock(shop);
return inStock != SelectedProduct::NOT_IN_STOCK && selected->GetProductInStock(code);
});
}

我用的是VS2010,有问题吗?这适用于 VS2013 吗?

最佳答案

问题是,在 C++11 中,您有两行 lambda,编译器无法确定返回类型(因此它等于 void)。您可以指定 ret。像手动输入

return std::any_of(m_products.begin(), m_products.end(),
[&shop, this](const std::unique_ptr<SelectedProduct>& selected) -> bool
{
auto inStock = selected->ProductInStock(shop);
return inStock != SelectedProduct::NOT_IN_STOCK && selected->GetProductInStock(code);
});

或者在一行中不使用变量inStock

return std::any_of(m_products.begin(), m_products.end(),
[&shop, this](const std::unique_ptr<SelectedProduct>& selected)
{
return selected->ProductInStock(shop) != SelectedProduct::NOT_IN_STOCK &&
selected->GetProductInStock(code);
});

关于c++ - lambda 函数抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609165/

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