传参数包重复函数

Pass parameter pack to function repeatedly

我需要在一个循环中重复传递一个参数包给一个函数,像这样:

void printString(string str)
{
    cout << "The string is: \"" << str << "\"" << endl;
}

template <typename FunctionType, typename ...Args>
void RunWithArgs(FunctionType functionToCall, Args...args)
{
    for (int i = 0; i < 3; i++)
        functionToCall(forward <Args>(args)...);
}

int main()
{
    string arg("something");
    RunWithArgs (printString, arg);
    
    return 0;
}

编译器提示我正在使用移出的对象,果然,字符串只在第一次传递:

The string is: "something"
The string is: ""
The string is: ""

如何在循环的每次迭代中将参数包传递给函数?

这一行:

functionToCall(forward <Args>(args)...);

您正在转发论点,在本例中,它移动了它。如果你不想移动,而是想复制,那就这样做:

functionToCall(args...);

Here is a live example.