Как работает шаблон в пакете аргументов шаблона функции?

Здравствуйте, у меня есть этот пример о шаблонах и шаблонах функций с переменным числом аргументов:

      int& neg(int& x){ x = -x; return x;}

void f(int& x){
    std::cout << x << ", ";
}

template <typename T, typename...Args>
void f(T& x, Args&...args){
    f( neg(args)...);
}


int main(){

    int x = 1, y = 2, z = 3, a = 4;
    f(x, y, z, a);

    std::cout << x << ", " << y << ", " << z << ", " << a << '\n';

    cout << '\n';
}

Выход:

      -4, 1, -2, 3, -4
  • Я не знаю, почему я получаю этот вывод и почему этого не должно быть -1, -2, -3 -4?

  • Может кто-нибудь объяснить мне, что именно происходит при применении шаблона к пакету аргументов функции: f(neg(args)...;? Большое спасибо!

  • Мне кажется, что он запускает шаблон в обратном порядке, то есть с конца к началу. не так ли?

0 ответов

Другие вопросы по тегам