【发布时间】:2021-01-24 07:59:20
【问题描述】:
我有一个函数可以接受打包到元组中的可变参数
template <class... Args>
void Bottom(tuple<Args&&...> t)
{
}
Args&& 是转发引用吗? IE。引用折叠的规则是否适用,还是我只是将 && 附加到包中的每个参数?
假设我想从一个肯定会获得转发引用的函数中调用这个函数:
template <class... Args>
void Top(Args&&... args) {
// 1. Bottom<Pack...>();
// 2. Bottom<Pack&&...>();
}
如果我不想更改参数 1 或 2,哪种语法最好?
编辑
我只是使用元组来展示一个包含我的参数的类。实际的打包类在调用层次结构的不同级别上有所不同。使用 using_fwd_as_tuple 的想法很酷,可以作为一种资源来查找库在这种情况下的作用。
【问题讨论】:
-
如果你问的问题不是你想问的问题,也许打开另一个问题。特别是在你得到答案之后,按照以下方式进行编辑是不好的:“哦,这个问题有一个答案,但我想要一个不同的答案”(我夸大了)
标签: c++ variadic-templates perfect-forwarding forwarding-reference