代码之家  ›  专栏  ›  技术社区  ›  HighCommander4

将变量传递给可变模板函数的C++

  •  3
  • HighCommander4  · 技术社区  · 16 年前

    例如,考虑以下函数,这些函数对其每个参数执行一些处理:

    void f()  // base case for recursion
    {
    }
    
    
    template <typename Head, typename ... Tail>
    void f(Head& head, Tail&... tail)
    {
        // Do processing on head
        process(head);
    
        // Now recurse on rest of arguments
        f(tail...);
    }
    

    如果我有:

    int a, b, c;
    ...
    f(a, b, c);
    

    这是否会导致f(int&)的实例化;,整数(&,整数(&),f(整数,&,整数(&),最后是f(int&)?

    如果我将f()的第二个参数改为“Tail…”,而不是“Tail&the…”,怎么样。实例化现在是f(int&,int,int),f(int&,int),最后是f(int&),这意味着,例如“c”将通过前两个调用进行复制,而最后一个调用将修改一个副本而不是原始副本?

    1 回复  |  直到 7 年前
        1
  •  2
  •   snk_kid    16 年前