西装和价值观是西装和价值的载体。使用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)); }); });