gpt4 book ai didi

C++0x 将参数传递给可变参数模板函数

转载 作者:太空狗 更新时间:2023-10-29 22:53:00 25 4
gpt4 key购买 nike

通过引用获取可变数量的参数是什么意思?这是否意味着每个参数都是通过引用传递的?

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

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&)、f(int&, int&) 和 f(int&) 的实例化吗?

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

有人能指出一个很好的引用资料来解释可变参数模板的工作原理吗?

最佳答案

我认为你的直觉是正确的,你可以从当前draft ISO spec阅读所有细节(尚未最终确定)您可以使用 GCC > 4.3 测试它们

关于C++0x 将参数传递给可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3261400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com