1

您好,我有这个关于可变参数函数模板和模式的示例:

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)...;?太感谢了!

  • 在我看来,它以相反的顺序开始模式,我的意思是从头到尾。不是吗?

4

0 回答 0