i have a shuffle_deck function that shuffles an array of cards with 52 members of it and then as i read along we also add jokers and a different deck that is an array with std::array<std::variant<Card,Joker>,54> and as an exercise/optional instead of overloading the shuffle_deck function you can use function template which i still havent figured it out how to make it work
HEADER FILE
//void shuffle_deck(std::array < Card,52 > & deck);
//void shuffle_deck(std::array < std::variant<Card, Joker>, 54 > & deck);
template<typename T>
void shuffle_deck(T & deck);
SOURCE FILE
//void shuffle_deck(std::array<Card, 52>& deck) {
// std::random_device rd;
// std::mt19937 gen{ rd() };
// std::ranges::shuffle(deck, gen);
//}
//
//void shuffle_deck(std::array < std::variant<Card, Joker>, 54 >& deck) {
// std::random_device rd;
// std::mt19937 gen{ rd() };
// std::ranges::shuffle(deck, gen);
//}
template<typename T>
void shuffle_deck(T& deck) {
std::random_device rd;
std::mt19937 gen{ rd() };
std::ranges::shuffle(deck, gen);
}
MAIN SOURCE FILE
int main() {
std::array<Card,52> deck = create_deck();
std::array<std::variant<Card, Joker>, 54> deck_with_jokers = create_extended_deck();
shuffle_deck(deck);
shuffle_deck(deck_with_jokers);
```