Comment écrire des fonctions qui acceptent des arguments illimités?

J'ai seulement été en mesure de trouver un façon, de fonctions, de prendre un nombre variable d'arguments.
C'est de cette façon:

#include <iostream>
#include <stdarg.h>

using namespace std;

void Print(int argumentAmount, ... );

int main()
{
    Print(5,11,22,33,44,55);
}

void Print(int argumentAmount, ... ){

    va_list arguments; 
    va_start(arguments, argumentAmount);

    int parameter;
    for(int i = 0; i < argumentAmount; ++i ){
        parameter = va_arg(arguments, int);
        cout << parameter << endl;
    }

    va_end(arguments);
    return;
}

2 Problèmes:
1.) - Je le préciser combien d'arguments, je suis de l'envoyer en pas souhaitable
2.) Je ne peux pas comprendre comment le modifier de sorte qu'il sera de sortie des chaînes de caractères.

Serait quelque chose comme cela sera possible sans avoir à surcharger la fonction plusieurs fois:

void Output(/*not sure how this would look*/);

int main(){

    Output("hello","world");
    Output("this","is","a","test");
    Output("As","many","strings","as","you","want","may","be","passed","in");

    return 0;
}
void Output(/*not sure how this would look*/){

    //loop through each string passed in and output it
}

Quoi à ce sujet:

void Capitalize(/*all passed by reference*/);

int main(){

    string s1 = "hello";
    string s2 = "world";

    string s3 = "this";
    string s4 = "is";
    string s5 = "a";
    string s6 = "test";

    string s7 = "as";
    string s8 = "many";
    string s9 = "strings";
    string s10 = "as";
    string s11 = "you";
    string s12 = "want";

    Capitalize(s1,s2);
    Capitalize(s3,s4,s5,s6);
    Capitalize(s7,s8,s9,s10,s11,s12);

    return 0;
}
void Capitalize(/*all passed by reference*/){

    //capitalize each string passed in

}

Tout ce que je peux penser à faire est de:
-la surcharge de la fonction plusieurs fois
-avoir la fonction d'accepter un certain type de conteneur au lieu

Si c'est PAS POSSIBLEquelqu'un pourrait-il expliquer pourquoi le compilateur n'est pas capable d'accomplir une tâche de ce genre.

source d'informationauteur Trevor Hickey | 2012-01-27