Переменное количество параметров c++

Как передать неопределённое количество параметром, но если всего 1 параметр то передать только в первое место, если два то в два места

void func(...)
{
    std::string arr[5] = { "qwe",/*вот сюда №1*/ ,"rty", /*и сюда №2*/ };
    std::string u;

    for (int i = 0; i < 5; ++i)
        u += arr[i];

    const char* d = u.c_str();
}

Ответы (1 шт):

Автор решения: AR Hovsepyan

Странный код конечно у вас для ваших намерений, но все же:

void func(std::initializer_list<std::string> arg)
{
    auto p = arg.begin(), q = arg.end();
    std::string arr[5] = 
    { "qwe", *p++,"rty", (p == q) ? "" : *p++, (p == q) ? "" : *p};
    std::string u;
    for (int i = 0; i < 5; ++i)
        u += arr[i];
    const char* d = u.c_str();  
    //...
}

int main() { 
    func( { "123", "456", "789" });    
    func({ "abc", "def" });
    return 0;
}
→ Ссылка