使用嵌套的lambda捕获局部变量时出错

时间:2013-03-10 03:01:49

标签: c++ c++11

西装和价值观是西装和价值的载体。使用Visual Studio 2010我收到错误,引用& ret in the lambda。

错误C3480:'Cards ::`anonymous-namespace':::: ret':lambda捕获变量必须来自封闭的函数范围

有什么想法吗?感谢。

std::vector<Cards::Card> Cards::Card::MakeDeck()
{
    std::vector<Card> ret;
    auto suits = Suit::All();
    auto values = Value::All();
    std::for_each(suits.cbegin(), suits.cend(), [&ret, &values](const Suit& suit){ std::for_each(values.cbegin(), values.cend(), [&ret, &suit](const Value& value){ ret.push_back(Card(suit, value)); }); });
}

编辑:我使用此版本进行了解决方法,制作了一个ret2。

std::for_each(suits.cbegin(), suits.cend(), [&ret, &values](const Suit& suit){ auto& ret2 = ret; std::for_each(values.cbegin(), values.cend(), [&ret2, &suit](const Value& value){ ret2.push_back(Card(suit, value)); }); });

0 个答案:

没有答案