Geben Sie einen Typ für alle Argumente an, die ohne Verwendung von Array, Vektor, Strukturen usw. an die variadische Funktion oder die variadische Vorlagenfunktion übergeben wurden.

Ich erstelle eine Funktion (möglicherweise eine Member-Funktion, nicht, dass es darauf ankommt, oder?), Die eine unbekannte Anzahl von Argumenten akzeptieren muss, aber ich möchte, dass alle vom selben Typ sind. Ich weiß, dass ich ein Array oder einen Vektor übergeben kann, aber ich möchte die Liste der Argumente direkt akzeptieren können, ohne zusätzliche Struktur oder sogar zusätzliche Klammern. Es sieht nicht so aus, als wären verschiedene Funktionen für sich genommen typsicher, und ich war mir nicht sicher, wie ich mit diesen verschiedenen Vorlagenfunktionen umgehen sollte. Hier ist im Wesentlichen, was ich anstrebe (mehr als wahrscheinlich nicht korrekter Code und überhaupt nicht zum Zweck, Listen von Drachen zu bekommen, 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
}

ODE

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

VERWENDUN

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

Versuchte schon ein paar Dinge ähnlich wie oben, keine Würfel. Vorschläge? Offensichtliche Versehen, die ich vielleicht gemacht habe? Ich weiß, dass es keine große Sache sein kann, dies stattdessen zu tun:

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})
;

aber ich wäre viel lieber in der Lage, es auf die erste Art und Weise zu tun, wenn es möglich ist.

Antworten auf die Frage(18)

Ihre Antwort auf die Frage