La spécification d'un type pour tous les arguments passés à variadic fonction ou variadic template fonction w/out à l'aide du tableau, vecteur, les structures, etc?

Je crée une fonction (éventuellement en fonction de membre de, pas que c'est important... peut-être que c'est?) qui doit accepter un nombre indéterminé d'arguments, mais je veux tous à être le même type. Je sais que je pourrais passer dans une matrice ou un vecteur, mais je veux être en mesure d'accepter la liste des arguments directement, sans structure supplémentaire ou même entre parenthèses supplémentaires. Il ne ressemble pas à variadic fonctions par eux-mêmes sont typesafe, et je ne savais pas vraiment comment aller à ce sujet w/variadic template fonctions. Voici en gros ce que je vise (plus que probablement pas le code est correct, et totalement non dans le but d'obtenir des listes de dragons, lol):

//typedef for dragon_list_t up here somewhere.

enum Maiden {
    Eunice
    , Beatrice
    , Una_Brow
    , Helga
    , Aida
};

dragon_list_t make_dragon_list(Maiden...) {
    //here be dragons
}

OU

template<Maiden... Maidens> dragon_list_t make_dragon_list(Maidens...) {
    //here be dragons
}

UTILISATION

dragon_list_t dragons_to_slay
    = make_dragon_list(Maiden.Eunice, Maiden.Helga, Maiden.Aida)
;

Essayé quelques choses de similaire à la déjà au-dessus, pas de dés. Des Suggestions? Évident oublis, j'ai peut être fait? Je sais que cela peut ne pas être une affaire énorme pour ce faire à la place:

dragon_list_t make_dragon_list(std::array<Maiden> maidens) {
    //here be dragons.
}
dragon_list_t dragons_to_slay
    = make_dragon_list({Maiden.Eunice, Maiden.Helga, Maiden.Aida})
;

mais je préfère être en mesure de faire la première manière, si possible.