可变参数模板-递归函数-最后一个可变参数成员

努朱夫

我有以下代码,以及从以下位置复制的可变参数模板:https : //www.youtube.com/watch?v= iWvcoIKSaoc @ 41:30

auto sum() { return 0; }

template<typename Head, typename... Tail>
auto sum(Head head, Tail... tail)
{
    return head+sum(tail...);
}

int main() {
    cout<< sum(1,2.4) << endl;
    //cout<< sum("hello ", "world") << endl;
    return 0;
}

我有两个问题:1.这里需要sum()函数,以便在处理最后一个可变参数成员时可以传递传入的void的返回值-是否可以避免编写此sum()函数并且具有相同的值功能?

  1. 从sum()函数返回整数'0'会限制整个模板使用整数-我可以扩展同一模板来连接字符串吗?

谢谢

纪尧姆·拉西科特(Guillaume Racicot)

诀窍是永远不允许空调用sum(),并将视为sum(last)最后一次递归:

template<typename Last>
auto sum(Last last) {
    return last;
}

template<typename Head, typename Second, typename... Tail>
auto sum(Head head, Second second, Tail... tail)
{
    return head + sum(second, tail...);
}

int main() {
    cout<< sum(1,2.4) << endl;
    cout<< sum("hello ", "world") << endl;
    return 0;
}

现场例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章