3
通過引用獲取可變數量的參數意味着什麼?這是否意味着每個參數都通過引用傳遞?C++ 0x將參數傳遞給variadic模板函數
考慮例如以下功能,其在其每個參數執行一些處理:
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 &,INT (int &,int &),f(int &,int &),最後f(int &)?
如果我把f()的第二個參數改爲「Tail ...」而不是「Tail & ...」,那麼怎麼辦?現在的實例是f(int &,int,int),f(int &,int),最後是f(int &),這意味着例如'c'將被複制通過前兩個調用,最後一次調用將修改副本而不是原始的?
有人可以指出一個很好的參考,解釋如何準確可變模板工作?