C++ 如何转发压缩变量参数
我有一个函数,它接受压缩到元组中的可变参数C++ 如何转发压缩变量参数,c++,variadic-templates,perfect-forwarding,forwarding-reference,C++,Variadic Templates,Perfect Forwarding,Forwarding Reference,我有一个函数,它接受压缩到元组中的可变参数 template <class... Args> void Bottom(tuple<Args&&...> t) { } 如果我不想改变参数1或2,哪种语法最好 编辑 我只使用tuple来展示一个打包了我的参数的类。实际的打包类在调用层次结构的不同级别上有所不同。使用使用fwd\u as\u tuple作为一种资源来查找库在这种情况下的功能是很酷的。我认为没有。我会使用std::forward\u as\u t
template <class... Args>
void Bottom(tuple<Args&&...> t)
{
}
如果我不想改变参数1或2,哪种语法最好
编辑
我只使用tuple来展示一个打包了我的参数的类。实际的打包类在调用层次结构的不同级别上有所不同。使用
使用fwd\u as\u tuple
作为一种资源来查找库在这种情况下的功能是很酷的。我认为没有。我会使用std::forward\u as\u tuple
并让编译器进行推导:
template <class... Args>
void Top(Args&&... args) {
Bottom(std::forward_as_tuple(args...));
}
模板
空顶(Args&…Args){
底部(std::forward_as_tuple(args…);
}
否,元组t
不是转发引用。它们只能作为顶级参数出现
您没有添加任何内容,而是尝试匹配参数。此类函数仅接受包含r值引用的元组(按值)
例子
#包括
使用名称空间std;
模板
空底(元组t)
{
}
//在此处键入代码,或加载示例。
int main(){
双var=0.0;
元组tup1{1,var,'c'};
//#1
//底部(tup1);
元组tup2{1,0.0,'c'};
//#2
//底部(tup2);
//#3
底部(std::move(tup2));
}
模板
空底(std::tuple t)
{
}
+1因为我可以看到向前的元组做了什么,并模仿它。不幸的是,我的代码中没有元组。Forward as tuple创建了一个参数引用元组(左值或右值引用)。我特别想保留
顶部
函数中推导的初始类型如果您提出的问题不是您想提出的问题,可能需要打开另一个问题。特别是在你得到答案后,编辑这样一句话是不好的:“哦,这个问题有答案,但我想要一个不同的答案”(我有些夸张)
template <class... Args>
void Top(Args&&... args) {
Bottom(std::forward_as_tuple(args...));
}