В range-v3 следующее является допустимым кодом для c ++ 17.
CardDeck::CardDeck() {
std::vector<Suit> Suits = {Clubs, Diamonds, Hearts, Spades};
std::vector<Value> Values = {Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace};
for (auto [value, suit] : ranges::view::cartesian_product(Values, Suits))
this->Cards.emplace_back(value, suit);
this->shuffle();
}
Я никогда не видел такого синтаксиса auto [value, suit]
, может кто-нибудь объяснить, когда это возможно?
есть общее объяснение того, когда это можно использовать или это волшебство из библиотеки диапазонов?