Для этого не-VARIADIC Например:Секвенирование среди VARIADIC расширения
int Func1();
double Func2();
void MyFunc(int, double);
int main()
{
MyFunc(Func1(), Func2());
//...
}
это не указано ли вычисляется первым Func1()
или Func2()
, так что оба они должны быть сделано до MyFunc()
называется.
Как это упорядочение работает с расширением вариационных аргументов?
template < typename Func, typename ...Args >
void MyFunc2(Func &&f, Args&& ...a)
{
int b[] = { f(std::forward<Args>(a))... };
//...
}
Допустим, что f
функция объект, который изменяет свое состояние после его первого вызова. Будет ли вызываться f
для каждого сегмента a
? Другими словами, будет вызываться f
по первому элементу в списке a
, затем втором, третьем и т. Д. Вместо случайного пропуска через расширенный список? Есть ли то, что мы использовали для вызова точек последовательности между каждым элементом?
Что означает «то, что мы использовали для вызова точек последовательности»? –
Я знаю об этом немного, но такие выражения, как «есть точка последовательности между * x * и * y *», были заменены на «* x *, секвентируется до * y *». Новое полное определение является более точным и включает помещения для нарезки. – CTMacUser