【发布时间】:2020-05-11 14:55:26
【问题描述】:
给定,
template<typename T>
void foo(T t)
{
std::tie(/*xxx*/)=t;
auto &[/*yyy*/]=t;
}
int main()
{
foo(forward_as_tuple(1,2,3));
foo(forward_as_tuple(1,2,3,4,5));
}
我希望foo() 解包传递给自身的元组。
可以使用auto 或std::tie() 进行分解声明,处理未知元组大小,如 xxx - yyy 吗?
如果是,如何?
我正在尝试另一种方法,也许所有元素都可以被推回该类型的向量,一旦它们得到。
std::vector<T> bar;
size_t baz=std::tuple_size<T>::value; //useless because it can't be used as:
for(int i=0; i<baz; i++)
bar.push_back(std::get<i>(t)); //since i isn't constant
使用向量只是一个失败的坏主意。
还能怎么做?
我很快要做的是;我想在 for 循环中获取元组元素。这就是为什么我认为我需要以某种方式提取它们。
【问题讨论】:
-
这有什么好处?你想对解压后的引用做什么?
-
首先,为什么要处理未知大小和类型的元组?如果参数列表是同质的,那么它可能不是元组的用例。
-
@PiotrSkotnicki 我试图找到一种方法然后理解它。参数列表不是同质的。
-
@idclev463035818 我计划在递归函数调用中使用其中的一些,其他参数将显示哪些以及如何使用。